บริการใน Android พร้อมตัวอย่าง - GeeksforGeeks (2024)

บริการในหุ่นยนต์เป็นส่วนประกอบพิเศษที่อำนวยความสะดวกให้แอปพลิเคชันทำงานในพื้นหลังเพื่อดำเนินงานที่ต้องใช้เวลานาน จุดมุ่งหมายหลักของบริการคือเพื่อให้แน่ใจว่าแอปพลิเคชันยังคงทำงานอยู่ในพื้นหลัง เพื่อให้ผู้ใช้สามารถใช้งานแอปพลิเคชันหลายตัวพร้อมกันได้ อินเทอร์เฟซผู้ใช้ไม่เป็นที่ต้องการสำหรับบริการ Android เนื่องจากได้รับการออกแบบมาเพื่อใช้งานกระบวนการที่ใช้เวลานานโดยที่ผู้ใช้ไม่ต้องดำเนินการใด ๆ บริการสามารถทำงานอย่างต่อเนื่องในพื้นหลังแม้ว่าแอปพลิเคชันจะปิดหรือผู้ใช้เปลี่ยนไปใช้แอปพลิเคชันอื่นก็ตาม นอกจากนี้ ส่วนประกอบของแอปพลิเคชันยังสามารถผูกเข้ากับบริการเพื่อดำเนินการได้การสื่อสารระหว่างกระบวนการ (IPC). มีความแตกต่างที่สำคัญระหว่างบริการ Android และเธรด คุณต้องไม่สับสนระหว่างทั้งสอง Thread เป็นคุณลักษณะที่ระบบปฏิบัติการจัดทำขึ้นเพื่อให้ผู้ใช้สามารถดำเนินการในเบื้องหลังได้ ในขณะที่การบริการเป็นแบบส่วนประกอบหุ่นยนต์ที่ทำการดำเนินการระยะยาวซึ่งผู้ใช้อาจไม่ทราบเนื่องจากไม่มี UI

ประเภทของบริการ Android

บริการใน Android พร้อมตัวอย่าง - GeeksforGeeks (1)

1. บริการเบื้องหน้า:

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

2. บริการเบื้องหลัง:

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

3. บริการที่ถูกผูกไว้:

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

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

ใน Android บริการมี 2 เส้นทางที่เป็นไปได้ในการทำให้วงจรชีวิตสมบูรณ์คือเริ่มต้นและขอบเขต.

1. เริ่มบริการ (บริการไม่จำกัด):

เมื่อปฏิบัติตามเส้นทางนี้ บริการจะเริ่มต้นเมื่อส่วนประกอบของแอปพลิเคชันเรียกใช้เริ่มต้นการบริการ()วิธี. เมื่อเริ่มต้นแล้ว บริการสามารถทำงานอย่างต่อเนื่องในเบื้องหลังแม้ว่าส่วนประกอบจะถูกทำลายซึ่งเป็นผู้รับผิดชอบในการเริ่มบริการก็ตาม มีสองทางเลือกในการหยุดการให้บริการ:

  • โดยการโทรหยุดบริการ()วิธี,
  • บริการสามารถหยุดตัวเองได้โดยใช้หยุดตัวเอง()วิธี.

2. บริการแบบมีขอบเขต:

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

บริการใน Android พร้อมตัวอย่าง - GeeksforGeeks (2)

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

พื้นฐานของบริการ Android

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

วิธีการ

คำอธิบาย

onStartCommand ()

บริการ Android เรียกใช้วิธีนี้เมื่อส่วนประกอบ (เช่น: กิจกรรม)

คำขอเพื่อเริ่มบริการโดยใช้ startService() เมื่อเริ่มให้บริการแล้ว

สามารถหยุดได้อย่างชัดเจนโดยใช้วิธี stopService() หรือ stopSelf()

onBind()

วิธีการนี้จำเป็นสำหรับการนำไปใช้ในบริการ Android และถูกเรียกใช้

เมื่อใดก็ตามที่ส่วนประกอบของแอปพลิเคชันเรียกใช้เมธอด bindService() เพื่อ

ผูกมัดตัวเองด้วยบริการ นอกจากนี้ยังมีส่วนต่อประสานกับผู้ใช้เพื่อการสื่อสาร

ด้วยบริการอย่างมีประสิทธิภาพโดยการส่งคืนอ็อบเจ็กต์ IBinder

หากไม่จำเป็นต้องผูกบริการ วิธีการจะต้องส่งคืนค่าว่าง

onUnbind()

ระบบ Android เรียกใช้วิธีนี้เมื่อไคลเอนต์ทั้งหมด

ถูกตัดการเชื่อมต่อจากอินเทอร์เฟซบริการเฉพาะ

onRebind()

เมื่อไคลเอนต์ทั้งหมดถูกตัดการเชื่อมต่อจากอินเทอร์เฟซเฉพาะของบริการและ

ไม่จำเป็นต้องเชื่อมต่อบริการกับไคลเอนต์ใหม่ ระบบเรียกวิธีนี้

บนสร้าง()

เมื่อใดก็ตามที่บริการถูกสร้างขึ้นโดยใช้ onStartCommand() หรือ onBind()

ระบบ android เรียกวิธีนี้ จำเป็นต้องใช้วิธีนี้

การตั้งค่าครั้งเดียว

onDestroy()

เมื่อไม่ได้ใช้บริการอีกต่อไป ระบบจะเรียกใช้วิธีนี้

ก่อนที่บริการจะถูกทำลายเป็นการเรียกทำความสะอาดครั้งสุดท้าย การบริการจะต้อง

ใช้วิธีนี้เพื่อล้างทรัพยากรเช่นผู้ฟังที่ลงทะเบียน

เธรด ตัวรับ ฯลฯ

ตัวอย่างบริการ Android

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

บันทึก: ขั้นตอนต่อไปนี้ดำเนินการบน Android Studio เวอร์ชัน 4.0

ขั้นตอนที่ 1: สร้างโครงการใหม่

  1. คลิกที่ไฟล์ จากนั้นคลิกใหม่ => โครงการใหม่
  2. เลือกกิจกรรมที่ว่างเปล่า
  3. เลือกภาษาเป็น Java/Kotlin
  4. เลือก SDK ขั้นต่ำตามความต้องการของคุณ

ขั้นตอนที่ 2: แก้ไขไฟล์ strings.xml

สตริงทั้งหมดที่ใช้ในกิจกรรมแสดงอยู่ในไฟล์นี้

XML

<ทรัพยากร>

<เชือก ชื่อ="app_name">บริการ_In_Androidเชือก>

<เชือก ชื่อ="มุ่งหน้าไป">บริการใน Androidเชือก>

<เชือก ชื่อ="ข้อความปุ่มเริ่มต้น">เริ่มบริการเชือก>

<เชือก ชื่อ="ข้อความปุ่มหยุด">หยุดบริการเชือก>

ทรัพยากร>

ขั้นตอนที่ 3: การทำงานกับไฟล์ Activity_main.xml

เปิดกิจกรรม_main.xmlไฟล์และเพิ่ม 2ปุ่มซึ่งจะเริ่มและหยุดบริการ ด้านล่างนี้คือโค้ดสำหรับการออกแบบเค้าโครงกิจกรรมที่เหมาะสม

XML

xml รุ่น="1.0" การเข้ารหัส="utf-8"?>

<androidx.constraintlayout.widget.ConstraintLayout

xmlns:เครื่องมือ="http://schemas.android.com/tools"

หุ่นยนต์:layout_width="match_parent"

android:layout_height="match_parent"

หุ่นยนต์: พื้นหลัง=#168BC34A"

เครื่องมือ:บริบท=".กิจกรรมหลัก">

<เค้าโครงเชิงเส้น

หุ่นยนต์:รหัส="@+id/linearLayout"

หุ่นยนต์:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_centerVertical="จริง"

Android: การวางแนว="แนวตั้ง"

แอป:layout_constraintBottom_toBottomOf="พ่อแม่"

แอป:layout_constraintEnd_toEndOf="พ่อแม่"

แอป:layout_constraintStart_toStartOf="พ่อแม่"

แอป:layout_constraintTop_toTopOf="พ่อแม่"

แอป:layout_constraintVertical_bias="1.0"

เครื่องมือ:ละเว้น=“ข้อจำกัดที่หายไป”>

<TextView

หุ่นยนต์:รหัส="@+id/textView1"

หุ่นยนต์:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginBottom="170dp"

android:fontFamily="@แบบอักษร/หุ่นยนต์"

หุ่นยนต์:ข้อความ="@string/หัวเรื่อง"

android:การจัดตำแหน่งข้อความ="ศูนย์"

android: ลักษณะข้อความ="@style/TextAppearance.AppCompat.Large"

android:textColor="@android:color/holo_green_dark"

android:textSize="36สป"

android: textStyle="ตัวหนา" />

<ปุ่ม

หุ่นยนต์:รหัส="@+id/ปุ่มเริ่มต้น"

หุ่นยนต์:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginStart="20dp"

android:layout_marginด้านบน="10dp"

android:layout_marginสิ้นสุด="20dp"

android:layout_marginBottom="20dp"

หุ่นยนต์: พื้นหลัง=#4CAF50"

android:fontFamily="@แบบอักษร/หุ่นยนต์"

หุ่นยนต์:ข้อความ="@string/startButtonText"

android:การจัดตำแหน่งข้อความ="ศูนย์"

android: ลักษณะข้อความ="@style/TextAppearance.AppCompat.Display1"

android:textColor=#FFFFFF"

android: textStyle="ตัวหนา" />

<ปุ่ม

หุ่นยนต์:รหัส="@+id/ปุ่มหยุด"

หุ่นยนต์:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginStart="20dp"

android:layout_marginด้านบน="10dp"

android:layout_marginสิ้นสุด="20dp"

android:layout_marginBottom="20dp"

หุ่นยนต์: พื้นหลัง=#4CAF50"

android:fontFamily="@แบบอักษร/หุ่นยนต์"

หุ่นยนต์:ข้อความ="@string/stopButtonText"

android:การจัดตำแหน่งข้อความ="ศูนย์"

android: ลักษณะข้อความ="@style/TextAppearance.AppCompat.Display1"

android:textColor=#FFFFFF"

android: textStyle="ตัวหนา" />

<ดูภาพ

หุ่นยนต์:รหัส="@+id/imageView"

หุ่นยนต์:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginด้านบน="80dp"

แอป: srcCompat="@ วาดได้/แบนเนอร์" />

เค้าโครงเชิงเส้น>

androidx.constraintlayout.widget.ConstraintLayout>

ขั้นตอนที่ 4: การสร้างคลาสบริการแบบกำหนดเอง

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

ชวา

นำเข้า android.app.บริการ;

นำเข้า android.content.เจตนา;

นำเข้า android.media.MediaPlayer;

นำเข้า android.os.IBinder;

นำเข้า android.provider.การตั้งค่า;

นำเข้า androidx.คำอธิบายประกอบ.Nullable;

สาธารณะ ระดับ ใหม่บริการขยาย บริการ {

// ประกาศวัตถุของ MediaPlayer

ส่วนตัว เครื่องเล่นมีเดียเพลเยอร์;

@แทนที่

// การดำเนินการให้บริการจะเริ่มขึ้น

// เมื่อเรียกใช้วิธีนี้

สาธารณะ ภายใน onStartCommand (เจตนาเจตนา,ภายใน ธง,ภายใน รหัสเริ่มต้น) {

// สร้างเครื่องเล่นสื่อซึ่ง

// จะเล่นเสียงของ Default

// เสียงเรียกเข้าในอุปกรณ์ Android

ผู้เล่น = MediaPlayer.create(นี้, การตั้งค่า System.DEFAULT_RINGTONE_URI );

// จัดเตรียมบูลีน

// ค่าเป็นจริงในการเล่น

// เสียงในวง

ผู้เล่น setLooping(จริง );

//เริ่มกระบวนการ

ผู้เล่น.เริ่มต้น();

// คืนสถานะ

// ของโปรแกรม

กลับ START_เหนียว;

}

@แทนที่

// การดำเนินการให้บริการจะ

// หยุดเรียกเมธอดนี้

สาธารณะ เป็นโมฆะ onDestroy() {

สุด ๆ.onDestroy();

//หยุดกระบวนการ

ผู้เล่น.หยุด();

}

@เป็นโมฆะ

@แทนที่

สาธารณะ IBinder onBind (เจตนาเจตนา) {

กลับ โมฆะ;

}

}

คอตลิน

นำเข้า android.app.บริการ

นำเข้า android.content.เจตนา

นำเข้า android.media.MediaPlayer

นำเข้า android.os.IBinder

นำเข้า android.provider.การตั้งค่า

ระดับ บริการใหม่ : บริการ() {

// ประกาศวัตถุของ MediaPlayer

ส่วนตัว lateinit เป็นผู้เล่น: MediaPlayer

// การดำเนินการให้บริการจะเริ่มขึ้น

// เมื่อเรียกใช้วิธีนี้

แทนที่ความสนุก onStartCommand (เจตนา: เจตนา, แฟล็ก: Int, startId: Int): Int {

// สร้างเครื่องเล่นสื่อซึ่ง

// จะเล่นเสียงของ Default

// เสียงเรียกเข้าในอุปกรณ์ Android

ผู้เล่น = MediaPlayer.create(นี้, การตั้งค่า System.DEFAULT_RINGTONE_URI)

// จัดเตรียมบูลีน

// ค่าเป็นจริงในการเล่น

// เสียงในวง

ผู้เล่น setLooping(จริง)

//เริ่มกระบวนการ

ผู้เล่น.เริ่มต้น()

// คืนสถานะ

// ของโปรแกรม

กลับ START_เหนียว

}

// การดำเนินการให้บริการจะ

// หยุดเรียกเมธอดนี้

แทนที่ความสนุก onDestroy() {

สุด ๆ.onDestroy()

//หยุดกระบวนการ

ผู้เล่น.หยุด()

}

แทนที่ความสนุก onBind (เจตนา: เจตนา): IBinder? {

กลับ โมฆะ

}

}

ขั้นตอนที่ 5: การทำงานกับไฟล์ MainActivity

ตอนนี้วัตถุปุ่มจะถูกประกาศและกระบวนการที่จะดำเนินการเมื่อคลิกปุ่มเหล่านี้จะถูกกำหนดในคลาส MainActivity ด้านล่างนี้เป็นโค้ดสำหรับดำเนินการขั้นตอนนี้

ชวา

นำเข้า androidx.appcompat.app.AppCompatActivity;

นำเข้า android.content.เจตนา;

นำเข้า android.os.มัด;

นำเข้า android.view.View;

นำเข้า android.widget.ปุ่ม;

สาธารณะ ระดับ กิจกรรมหลักขยาย AppCompatActivityดำเนินการ ดู OnClickListener {

// ประกาศวัตถุของคลาสปุ่ม

ส่วนตัว ปุ่มเริ่มหยุด;

@แทนที่

มีการป้องกัน เป็นโมฆะ onCreate (บันเดิลที่บันทึกไว้InstanceState) {

สุด ๆ.onCreate( saveInstanceState );

setContentView( R.layout.activity_main );

// กำหนด ID ของ startButton

// เพื่อเริ่มต้นวัตถุ

start = (ปุ่ม) findViewById( R.id.startButton );

// กำหนด ID ของ stopButton

// ไปที่จุดหยุดวัตถุ

หยุด = (ปุ่ม) findViewById( R.id.stopButton );

// ประกาศผู้ฟังสำหรับ

// ปุ่มเพื่อให้ตอบสนอง

//ถูกต้องตามกระบวนการ

start.setOnClickListener(นี้ );

stop.setOnClickListener(นี้ );

}

สาธารณะ เป็นโมฆะ onClick (ดูมุมมอง) {

// กระบวนการที่จะดำเนินการ

// หากคลิกปุ่มเริ่ม

ถ้า(ดู == เริ่มต้น){

//เริ่มบริการ

เริ่มต้นการบริการ(ใหม่ เจตนา(นี้,บริการใหม่.ระดับ ) );

}

// กระบวนการที่จะดำเนินการ

// หากคลิกปุ่มหยุด

อื่น ถ้า (ดู == หยุด){

//หยุดบริการ

หยุดบริการ(ใหม่ เจตนา(นี้,บริการใหม่.ระดับ ) );

}

}

}

คอตลิน

นำเข้า android.content.เจตนา

นำเข้า android.os.บันเดิล

นำเข้า android.view.View

นำเข้า android.widget.ปุ่ม

นำเข้า androidx.appcompat.app.AppCompatActivity

ระดับ MainActivity : AppCompatActivity(), View.OnClickListener {

// ประกาศวัตถุของคลาสปุ่ม

ส่วนตัว เริ่มต้นที่ไหน: ปุ่ม? =โมฆะ

ส่วนตัว หยุด var: ปุ่ม? =โมฆะ

แทนที่ความสนุก onCreate (savedInstanceState: Bundle?) {

สุด ๆ.onCreate(savedInstanceState)

setContentView (R.layout.activity_main)

// กำหนด ID ของ startButton

// เพื่อเริ่มต้นวัตถุ

start = findViewById(R.id.startButton) เป็นปุ่ม

// กำหนด ID ของ stopButton

// ไปที่จุดหยุดวัตถุ

stop = findViewById(R.id.stopButton) เป็นปุ่ม

// ประกาศผู้ฟังสำหรับ

// ปุ่มเพื่อให้ตอบสนอง

//ถูกต้องตามกระบวนการ

เริ่ม!!.setOnClickListener(นี้)

หยุด!!.setOnClickListener(นี้)

}

แทนที่ความสนุกบนคลิก (ดู: ดู) {

// กระบวนการที่จะดำเนินการ

// หากคลิกปุ่มเริ่ม

ถ้า (ดู === เริ่มต้น) {

//เริ่มบริการ

startService(เจตนา(นี้,บริการใหม่::ระดับ.java))

}

// กระบวนการที่จะดำเนินการ

// หากคลิกปุ่มหยุด

อื่น ถ้า (ดู === หยุด) {

//หยุดบริการ

stopService (เจตนา (นี้,บริการใหม่::ระดับ.java))

}

}

}

ขั้นตอนที่ 6: แก้ไขไฟล์ AndroidManifest.xml

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

XML

xml รุ่น="1.0" การเข้ารหัส="utf-8"?>

<ประจักษ์ xmlns:android="http://schemas.android.com/apk/res/android"

บรรจุุภัณฑ์="com.example.services_in_android">

<แอปพลิเคชัน

android:allowBackup="จริง"

หุ่นยนต์:ไอคอน="@mipmap/ic_launcher"

หุ่นยนต์:ฉลาก="@string/app_name"

android:ไอคอนกลม="@mipmap/ic_launcher_round"

หุ่นยนต์: รองรับ Rtl="จริง"

หุ่นยนต์: ธีม="@สไตล์/ธีมแอป">

<กิจกรรม หุ่นยนต์:ชื่อ=".กิจกรรมหลัก">

<ตัวกรองเจตนา>

<การกระทำ หุ่นยนต์:ชื่อ="android.intent.action.MAIN" />

<หมวดหมู่ หุ่นยนต์:ชื่อ="android.intent.category.LAUNCHER" />

ตัวกรองเจตนา>

กิจกรรม>

<ข้อมูลเมตา

หุ่นยนต์:ชื่อ="โหลด_แบบอักษรไว้ล่วงหน้า"

หุ่นยนต์:ทรัพยากร="@array/preloaded_fonts" />

<บริการ หุ่นยนต์:ชื่อ=".บริการใหม่"/>

แอปพลิเคชัน>

ประจักษ์>

เอาท์พุต: ทำงานบน Emulator


อัปเดตล่าสุด : 15 ก.ย. 2563

ชอบบทความ

บันทึกบทความ

ก่อนหน้า

ความรู้เบื้องต้นเกี่ยวกับกิจกรรมใน Android

ต่อไป

แอพ Android ทำงานอย่างไร?

แบ่งปันความคิดของคุณในความคิดเห็น

โปรดเข้าสู่ระบบแสดงความคิดเห็น...

I am an expert in Android development with extensive knowledge and hands-on experience in designing and implementing various components, including services. I've successfully developed and deployed Android applications, showcasing my expertise in the field. Let me guide you through the concepts discussed in the article:

Android Services:

1. Definition and Purpose:

  • Services in Android are components that enable applications to run tasks in the background, allowing for long-running operations.
  • The primary goal is to keep the application active in the background, enabling users to operate multiple applications simultaneously.

2. User Interface and Background Operation:

  • Android services don't have a user interface, designed to operate without user intervention.
  • Services can run continuously in the background even if the application is closed or the user switches to another application.

3. Types of Android Services:

  • Foreground Services:

    • Notify the user about ongoing operations.
    • Users can interact with the service through notifications (e.g., tracking progress in downloading).
  • Background Services:

    • Operate without user intervention.
    • Tasks like schedule syncing of data or storing data fall under this category.
  • Bound Services:

    • Allow application components to bind themselves to the service for inter-process communication (IPC).
    • More than one component can bind to a service simultaneously.

4. Difference Between Services and Threads:

  • Services are Android components for long-running operations, while threads are a feature provided by the operating system for background operations.

5. Android Service Life Cycle:

  • Started Service (Unbounded Service):

    • Initiated by calling startService() method.
    • Can run continuously even if the initiating component is destroyed.
    • Can be stopped using stopService() or stopSelf() methods.
  • Bound Service:

    • Treated as a server in a client-server interface.
    • Components can send requests to the service and fetch results.
    • Bound using bindService(), and to stop, components must unbind using unbindService().

6. Fundamentals of Android Services:

  • User-defined services extend the Service class and override callback methods.
  • Important methods include onStartCommand(), onBind(), onUnbind(), onRebind(), onCreate(), and onDestroy().

7. Example of Android Services (Playing Music in Background):

  • Demonstrates step-by-step implementation using Android Studio.
  • Involves creating a custom service class with callback methods and MediaPlayer to play music.

8. AndroidManifest.xml:

  • Mentioning the created service in the manifest file is crucial for successful service implementation.

These concepts provide a comprehensive understanding of Android services, their types, life cycle, implementation, and practical examples. If you have any specific questions or need further clarification on any of these topics, feel free to ask.

บริการใน Android พร้อมตัวอย่าง - GeeksforGeeks (2024)

References

Top Articles
Latest Posts
Article information

Author: Aron Pacocha

Last Updated:

Views: 5840

Rating: 4.8 / 5 (68 voted)

Reviews: 91% of readers found this page helpful

Author information

Name: Aron Pacocha

Birthday: 1999-08-12

Address: 3808 Moen Corner, Gorczanyport, FL 67364-2074

Phone: +393457723392

Job: Retail Consultant

Hobby: Jewelry making, Cooking, Gaming, Reading, Juggling, Cabaret, Origami

Introduction: My name is Aron Pacocha, I am a happy, tasty, innocent, proud, talented, courageous, magnificent person who loves writing and wants to share my knowledge and understanding with you.