บทแนะนำบริการ Android: จะเรียกใช้แอปพลิเคชันในพื้นหลังได้อย่างไร



บทแนะนำบริการ Android นี้ช่วยให้คุณเข้าใจวิธีดำเนินการบนพื้นหลังเช่นการเล่นเพลงโดยไม่ได้แนบ UI ใด ๆ

บ่อยครั้งที่ใช้หลายแอปพลิเคชันบนสมาร์ทโฟนของคุณคุณอาจต้องการเปลี่ยนจากแอปพลิเคชันหนึ่งไปยังอีกแอปพลิเคชันหนึ่ง แต่ต้องตรวจสอบให้แน่ใจว่าแอปพลิเคชันทั้งหมดของคุณยังคงทำงานอยู่เบื้องหลัง สิ่งเหล่านี้ไม่ใช่เพียงบริการที่นำเสนอโดย . ดังนั้นบทความเกี่ยวกับบทแนะนำบริการ Android นี้จะช่วยให้คุณเข้าใจวิธีการทำงานกับบริการ

ฉันจะพูดถึงหัวข้อต่อไปนี้:





บริการ Android คืออะไร?

การบริการเป็นกระบวนการ บริการ Android เป็นส่วนประกอบที่ทำงานอยู่เบื้องหลังเพื่อดำเนินการการดำเนินการที่ยาวนานโดยไม่ต้องโต้ตอบกับผู้ใช้และทำงานได้แม้ว่าแอปพลิเคชันจะถูกทำลายส่วนประกอบของแอปพลิเคชันอื่นสามารถเริ่มบริการและยังคงทำงานในพื้นหลังแม้ว่าคุณจะเปลี่ยนไปใช้แอปพลิเคชันอื่น

นอกจากนี้คอมโพเนนต์สามารถผูกตัวเองกับบริการเพื่อโต้ตอบกับมันและยังทำการสื่อสารระหว่างกระบวนการ



บันทึก: android.app.Service เป็นคลาสย่อยของคลาส ContextWrapper และบริการ Android ไม่ใช่เธรดหรือกระบวนการแยกต่างหาก

วงจรชีวิตของ Android- บริการ

วงจรชีวิตของบริการ Android สามารถมีบริการได้สองรูปแบบ วงจรชีวิตของบริการเป็นไปตามสองเส้นทางที่แตกต่างกัน ได้แก่ :

การสอนสตูดิโอภาพสำหรับผู้เริ่มต้น
  1. เริ่มแล้ว
  2. ผูกพัน

เริ่มแล้ว



บริการจะเริ่มทำงานเมื่อคอมโพเนนต์ของแอปพลิเคชันเรียกใช้ startService () วิธี. เมื่อเริ่มต้นบริการสามารถทำงานในพื้นหลังได้โดยไม่มีกำหนดแม้ว่าส่วนประกอบที่รับผิดชอบในการเริ่มต้นจะถูกทำลาย หยุดโดยใช้ stopService () วิธี. บริการนี้ยังสามารถหยุดตัวเองได้ด้วยการโทรไปที่ไฟล์ หยุดตัวเอง () วิธี.

ผูกพัน

บริการถูกผูกไว้เมื่อส่วนประกอบของแอปพลิเคชันเชื่อมโยงกับบริการโดยการโทร bindService () . Bound service นำเสนออินเทอร์เฟซไคลเอนต์เซิร์ฟเวอร์ที่อนุญาตให้คอมโพเนนต์โต้ตอบกับบริการส่งคำขอและรับผลลัพธ์ มันประมวลผลผ่านการสื่อสารระหว่างกระบวนการ (IPC) ไคลเอนต์สามารถเลิกผูกบริการได้โดยโทรไปที่ไฟล์ unbindService () วิธี.

วงจรชีวิตบริการ Android - บทแนะนำบริการ Android- Edureka

ไปยังส่วนถัดไปของบทความนี้เกี่ยวกับบริการของ 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' นี้ เราจะติดต่อกลับไป