บ่อยครั้งที่ใช้หลายแอปพลิเคชันบนสมาร์ทโฟนของคุณคุณอาจต้องการเปลี่ยนจากแอปพลิเคชันหนึ่งไปยังอีกแอปพลิเคชันหนึ่ง แต่ต้องตรวจสอบให้แน่ใจว่าแอปพลิเคชันทั้งหมดของคุณยังคงทำงานอยู่เบื้องหลัง สิ่งเหล่านี้ไม่ใช่เพียงบริการที่นำเสนอโดย . ดังนั้นบทความเกี่ยวกับบทแนะนำบริการ Android นี้จะช่วยให้คุณเข้าใจวิธีการทำงานกับบริการ
ฉันจะพูดถึงหัวข้อต่อไปนี้:
- บริการ Android คืออะไร?
- วงจรชีวิตของ Android- บริการ
- Android- วิธีการบริการ
- รหัสโครงกระดูกสำหรับบริการ Android
- การสาธิต
บริการ Android คืออะไร?
การบริการเป็นกระบวนการ บริการ Android เป็นส่วนประกอบที่ทำงานอยู่เบื้องหลังเพื่อดำเนินการการดำเนินการที่ยาวนานโดยไม่ต้องโต้ตอบกับผู้ใช้และทำงานได้แม้ว่าแอปพลิเคชันจะถูกทำลายส่วนประกอบของแอปพลิเคชันอื่นสามารถเริ่มบริการและยังคงทำงานในพื้นหลังแม้ว่าคุณจะเปลี่ยนไปใช้แอปพลิเคชันอื่น
นอกจากนี้คอมโพเนนต์สามารถผูกตัวเองกับบริการเพื่อโต้ตอบกับมันและยังทำการสื่อสารระหว่างกระบวนการ
บันทึก: android.app.Service เป็นคลาสย่อยของคลาส ContextWrapper และบริการ Android ไม่ใช่เธรดหรือกระบวนการแยกต่างหาก
วงจรชีวิตของ Android- บริการ
วงจรชีวิตของบริการ Android สามารถมีบริการได้สองรูปแบบ วงจรชีวิตของบริการเป็นไปตามสองเส้นทางที่แตกต่างกัน ได้แก่ :
การสอนสตูดิโอภาพสำหรับผู้เริ่มต้น
เริ่มแล้ว
บริการจะเริ่มทำงานเมื่อคอมโพเนนต์ของแอปพลิเคชันเรียกใช้ startService () วิธี. เมื่อเริ่มต้นบริการสามารถทำงานในพื้นหลังได้โดยไม่มีกำหนดแม้ว่าส่วนประกอบที่รับผิดชอบในการเริ่มต้นจะถูกทำลาย หยุดโดยใช้ stopService () วิธี. บริการนี้ยังสามารถหยุดตัวเองได้ด้วยการโทรไปที่ไฟล์ หยุดตัวเอง () วิธี.
ผูกพัน
บริการถูกผูกไว้เมื่อส่วนประกอบของแอปพลิเคชันเชื่อมโยงกับบริการโดยการโทร bindService () . Bound service นำเสนออินเทอร์เฟซไคลเอนต์เซิร์ฟเวอร์ที่อนุญาตให้คอมโพเนนต์โต้ตอบกับบริการส่งคำขอและรับผลลัพธ์ มันประมวลผลผ่านการสื่อสารระหว่างกระบวนการ (IPC) ไคลเอนต์สามารถเลิกผูกบริการได้โดยโทรไปที่ไฟล์ unbindService () วิธี.
ไปยังส่วนถัดไปของบทความนี้เกี่ยวกับบริการของ Android เราจะมาพูดถึงเรื่องต่างๆกันวิธีการภายใต้คลาสบริการ
บทแนะนำบริการ Android: วิธีการ
มีวิธีการสองสามวิธีที่คุณสามารถดำเนินการกับแอปพลิเคชันใดก็ได้ บางส่วน ได้แก่ :
วิธี | คำอธิบาย |
---|---|
onStartCommand () | วิธีนี้เรียกว่าเมื่อส่วนประกอบอื่น ๆ เช่นพูดว่ากิจกรรมร้องขอให้เริ่มบริการโดยการโทร startService () . เป็นความรับผิดชอบของคุณที่จะหยุดให้บริการเมื่องานที่เกี่ยวข้องเสร็จสิ้นโดยใช้ หยุดตัวเอง () หรือ stopService () วิธีการ |
เลิกผูก () | เรียกเมธอดนี้เมื่อส่วนประกอบอื่นต้องการผูกกับบริการโดยการโทร bindService () . ในการดำเนินการนี้คุณต้องจัดเตรียมอินเทอร์เฟซที่ไคลเอ็นต์ใช้เพื่อสื่อสารกับบริการ มันส่งคืนไฟล์ IBinder วัตถุ. หากคุณไม่ต้องการอนุญาตการผูกมัดให้กลับมา โมฆะ . |
onUnbind () | ระบบเรียกวิธีนี้เมื่อไคลเอนต์ทั้งหมดถูกตัดการเชื่อมต่อจากอินเทอร์เฟซเฉพาะที่เผยแพร่โดยบริการ |
onRebind () | เรียกวิธีนี้เมื่อไคลเอนต์ใหม่เชื่อมต่อกับบริการหลังจากก่อนหน้านี้ได้รับแจ้งว่าทั้งหมดถูกตัดการเชื่อมต่อใน onUnbind (เจตนา) . |
onCreate () | ระบบเรียกเมธอดนี้เมื่อสร้างบริการครั้งแรกโดยใช้ onStartCommand () หรือ เลิกผูก () . จำเป็นต้องทำการตั้งค่าเพียงครั้งเดียว |
onDestroy () | วิธีนี้เรียกว่าเมื่อไม่มีการใช้บริการอีกต่อไปและกำลังถูกทำลาย บริการของคุณควรใช้สิ่งนี้เพื่อล้างทรัพยากรใด ๆ เช่นเธรดผู้ฟังที่ลงทะเบียนตัวรับ ฯลฯ วิธีจัดเรียงตัวเลขใน c ++ |
รหัสโครงกระดูก
MainActivity คลาสสาธารณะขยายกิจกรรม {private TextView textView private BroadcastReceiver receiver = new BroadcastReceiver () {@Override public void onReceive (Context context, Intent Intent) {Bundle bundle = Intent.getExtras () if (bundle! = null) {String string = bundle.getString (DownloadService.FILEPATH) int resultCode = bundle.getInt (DownloadService.RESULT) if (resultCode == RESULT_OK) {Toast.makeText (MainActivity.this, 'Download complete. Download URI:' + string, Toast.LENGTH_LONG) .show () textView.setText ('ดาวน์โหลดเสร็จแล้ว')} else {Toast.makeText (MainActivity.this, 'Download failed', Toast.LENGTH_LONG) .show () textView.setText ('Download failed')}}} @Override โมฆะสาธารณะ onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) textView = (TextView) findViewById (R.id.status)} @Override protected void onResume () {super.onResume ( ) registerReceiver (ตัวรับ IntentFilter ใหม่ (DownloadService.NOTIFICATION))} @Override โมฆะป้องกัน onPause () {super.onPause () unregisterReceiver (ตัวรับ)} โมฆะสาธารณะ onClick (ดูมุมมอง) {เจตนาเจตนา = เจตนาใหม่ (สิ่งนี้, DownloadService.class) // เพิ่มข่าวสารสำหรับบริการที่จะดาวน์โหลดไฟล์และตำแหน่งที่จะดาวน์โหลด เก็บ Intent.putExtra (DownloadService.FILENAME, 'index.html') เจตนา.putExtra (DownloadService.URL, 'www.edureka.co') startService (ความตั้งใจ) textView.setText ('บริการเริ่มต้นแล้ว')}}
ในตัวอย่างนี้คุณสามารถดูวิธีการเช่น onCreate () , onResume () , onPause () . วิธีการเหล่านี้ประกอบเป็นโครงสร้างของบริการใน Android
ตอนนี้เราจะเข้าสู่ส่วนที่ใช้งานได้จริงของบทแนะนำบริการ Android นี้วิธีสร้างบริการและจัดการ
การสาธิต
มาดูวิธีเล่นเพลงเป็นพื้นหลังกัน ในการทำเช่นนั้นฉันจะใช้ Andriod Studio .
ขั้นตอนที่ 1
สร้างโปรเจ็กต์เปล่าใหม่ ตั้งชื่อโครงการของคุณและคลิกที่โฟลเดอร์ Java และคลิกที่ไฟล์ กิจกรรมหลัก . ก่อนอื่นให้เพิ่ม MediaPlayer เพื่อให้คุณสามารถนำเข้ารายละเอียดของผู้เล่นเช่นเริ่มตั้งค่าลูปและอื่น ๆ
แพ็กเกจ com.example.mydemoapplication นำเข้า androidx.appcompat.app.AppCompatActivity คลาสสาธารณะ MainActivity ขยาย AppCompatActivity {@Override ป้องกันโมฆะ onCreate (Bundle savedInstanceState) {super.onCreate (บันทึกอินสแตนซ์ (นี่คือ Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (จริง) player.start ()}}
หมายเหตุ: หากคุณใช้งานครั้งแรกอย่าลืมเปิดใช้งาน BIOS คุณสามารถทำได้โดยรีสตาร์ทระบบของคุณ
คุณจะต้องเพิ่มอุปกรณ์เสมือน เพียงแค่คลิกที่ เปิดตัวจัดการ AVD
เลือกอุปกรณ์ที่คุณต้องการและคุณพร้อมที่จะไป!
สิ่งนี้จะทำงานเฉพาะเมื่อหน้าจอทำงาน แต่เพื่อให้แอปพลิเคชันนี้ทำงานได้แม้ในพื้นหลังคุณต้องเพิ่มโค้ดอีกสองสามบรรทัดใน activity_main.xml ไฟล์.
ขั้นตอนที่ 2
เมื่อคุณเรียกใช้รหัสที่เกี่ยวข้องคุณจะสามารถเรียกใช้แอปพลิเคชันและจะสามารถเล่นเพลงบนพื้นหลังได้นั่นคือหากเปิดแอปพลิเคชันอื่นใดเสียงนี้จะยังคงเล่นอยู่
มาดูกันว่าจะทำได้อย่างไร
วิธีหยุดโปรแกรม java ในโค้ด
- สร้างคลาสอื่นในโฟลเดอร์ Java และตั้งชื่อ ที่นี่ฉันเรียกมันว่า“ MyService '.
- คลาสนี้ขยายคลาสบริการ
- เมื่อคุณมีเมธอดคลาส Service แล้วให้ใช้เมธอดโดยคลิก alt + Enter
- หลังจากนี้คุณต้องลบล้างวิธีการ คลิกขวาที่หน้าต่างเพื่อรับตัวเลือก
- สร้างวิธีการแทนที่เลือก onStartCommand () และ OnDestroy ()
- แก้ไขไฟล์ onStartCommand () วิธีการเพิ่มรหัสต่อไปนี้:
เครื่องเล่น MediaPlayer = MediaPlayer.create (นี่คือ Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (จริง) player.start ()
บันทึก: ลบรหัสนี้ในไฟล์ กิจกรรมหลัก.
- สิ่งนี้จะทำให้เกิดข้อผิดพลาดขอให้คุณลบคำสั่ง ดังนั้นให้ลบคำสั่ง return และประกาศ MediaPlayer เป็นวิธีส่วนตัวและส่งคืน START_STICKY . สิ่งนี้จะส่งคืนสถานะเริ่มต้น
- เพิ่ม player.stop () ใน onDestroy () วิธี.
ขั้นตอนที่ 3
ไปที่ เนื้อวัว และไปที่เค้าโครงคลิกที่ android_main.xml เพื่อรับไฟล์ XML ของแอปพลิเคชัน
- ลบ TextView และแทนที่ด้วย LinearLayout และเพิ่มปุ่ม เพิ่มรหัสที่เกี่ยวข้อง
<LinearLayout แอนดรอยด์:ปฐมนิเทศ= 'แนวตั้ง' แอนดรอยด์: layout_width= 'match_parent' แอนดรอยด์: layout_height= 'wrap_content' แอนดรอยด์: layout_centerVertical= 'จริง' เครื่องมือ: ละเว้น= 'MissingConstraints'><ปุ่ม แอนดรอยด์: id= '@ + id / buttonStart' แอนดรอยด์: ข้อความ= 'เริ่มบริการ' แอนดรอยด์: layout_width= 'wrap_content' แอนดรอยด์: layout_height= 'match_parent'/><ปุ่ม แอนดรอยด์: id= '@ + id / buttonStop' แอนดรอยด์: ข้อความ= 'หยุดบริการ' แอนดรอยด์: layout_width= 'wrap_content' แอนดรอยด์: layout_height= 'match_parent'/>LinearLayout>
- เมื่อคุณทำสิ่งนี้แล้วให้กลับไปที่ไฟล์ กิจกรรมหลัก คลาสและเพิ่มรหัสที่เกี่ยวข้องเพื่อเชื่อมโยงไฟล์ XML และไฟล์ MyServiceClass
แพคเกจ com.example.newproject นำเข้า androidx.appcompat.app.AppCompatActivity คลาสสาธารณะ MainActivity ขยาย AppCompatActivity ใช้ View OnClickListener {private Button start, stop @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceViewState) .activity_main) start = (Button) findViewById (R.id.buttonStart) stop = (Button) findViewById (R.id.buttonStop) start.setOnClickListener (this) stop.setOnClickListener (this)} @Override public void onClick (View view ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} else if (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}}
ขั้นตอนที่ 4
เมื่อคุณเชื่อมโยงชั้นเรียนเสร็จแล้วให้เรียกใช้รหัส
หมายเหตุ: เพิ่มชื่อคลาสบริการในไฟล์ AndroidManifiest.xml
ต่อไปมาเรียกใช้โค้ดกัน
เมื่อคุณเริ่มบริการบริการจะทำงานบนพื้นหลังแม้ว่าจะเปิดแอปพลิเคชันอื่นอยู่ก็ตาม คุณสามารถเริ่มหรือหยุดบริการได้โดยคลิกที่ปุ่ม
นี่คือการสาธิตง่ายๆที่คุณได้เรียนรู้วิธีทำงานกับบริการ Android
ด้วยเหตุนี้เราจึงมาถึงตอนท้ายของบทความนี้เกี่ยวกับ 'บทแนะนำบริการ Android'ฉันหวังว่าคุณจะชัดเจนกับหัวข้อที่กล่าวถึงในบล็อกนี้
ตอนนี้คุณได้อ่านบล็อกบทแนะนำบริการ Android ของเราแล้วคุณสามารถดู Edureka’s เพื่อเริ่มการเรียนรู้ของคุณอย่างรวดเร็ว
มีข้อสงสัยหรือไม่? อย่าลืมพูดถึงพวกเขาในความคิดเห็นของบล็อก 'บทแนะนำบริการ Android' นี้ เราจะติดต่อกลับไป