ก่อนเข้าตัวอย่างเราควรรู้ว่าบริการใน Android คืออะไร บริการจะดำเนินการเบื้องหลังโดยไม่มีการโต้ตอบกับ UI และทำงานได้แม้หลังจากกิจกรรมถูกทำลาย
ตัวอย่างนี้สาธิตเกี่ยวกับวิธีการตรวจสอบว่าบริการทำงานบน Android หรือไม่
ขั้นตอนที่ 1 − สร้างโครงการใหม่ใน Android Studio ไปที่ไฟล์ ⇒ โครงการใหม่และกรอกรายละเอียดที่จำเป็นทั้งหมดเพื่อสร้างโครงการใหม่
ขั้นตอนที่ 2 − เพิ่มรหัสต่อไปนี้ใน res/layout/activity_main.xml
ในโค้ดข้างต้น เราได้ดูข้อความ เมื่อผู้ใช้คลิกที่มุมมองข้อความ จะเริ่มให้บริการและหยุดบริการ
ขั้นตอนที่ 3 − เพิ่มรหัสต่อไปนี้ใน src/MainActivity.java
แพ็คเกจ com.example.andy.myapplication;นำเข้า android.app.ActivityManager;นำเข้า android.content.Context;นำเข้า android.content.Intent;นำเข้า android.support.v7.app.AppCompatActivity;นำเข้า android.os.Bundle นำเข้า android.util.Log นำเข้า android.view.View นำเข้า android.widget.TextView คลาสสาธารณะ MainActivity ขยาย AppCompatActivity { @Override ป้องกันโมฆะ onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView(R.layout.activity_main); ข้อความ TextView สุดท้าย =findViewById (R.id.text); text.setOnClickListener (View.OnClickListener ใหม่ () { @แทนที่โมฆะสาธารณะ onClick (ดู v) { ถ้า (isMyServiceRunning (service.class)) { text.setText ("หยุด"); stopService (เจตนาใหม่ (MainActivity.this บริการ) .class)); } else { text.setText ("Started"); startService (เจตนาใหม่ (MainActivity.this, service.class)); } } }); } บูลีนส่วนตัว isMyServiceRunning (คลาส > serviceClass) { ตัวจัดการกิจกรรม =(ActivityManager) getSystemService (Context.ACTIVITY_SERVICE); สำหรับ (ActivityManager.RunningServiceInfo บริการ:manager.getRunningServices (Integer.MAX_VALUE)) { if (serviceClass.getName().equals(service.service.getClassName())) { คืนค่าเป็น true; } } คืนค่าเท็จ }}
ในรหัสด้านบนเพื่อเริ่มและหยุดบริการ เราใช้เจตนาและผ่านบริบทและคลาสบริการ ตอนนี้สร้างคลาสบริการในโฟลเดอร์แพ็คเกจเป็น service.class และเพิ่มรหัสต่อไปนี้ –
แพ็คเกจ com.example.andy.myapplication;import android.app.Service;import android.content.Intent;import android.os.IBinder;import android.widget.Toast;บริการคลาสสาธารณะขยายบริการ { @Override สาธารณะ IBinder onBind (เจตนาเจตนา) { ส่งคืน null; } @แทนที่ int สาธารณะ onStartCommand (เจตนาเจตนา แฟล็ก int int startId) { Toast.makeText (นี่คือ "บริการที่เริ่มต้นโดยผู้ใช้", Toast.LENGTH_LONG).show(); ส่งคืน START_STICKY; } @แทนที่โมฆะสาธารณะ onDestroy() { super.onDestroy(); Toast.makeText(นี่คือ "บริการถูกทำลายโดยผู้ใช้", Toast.LENGTH_LONG).show(); }}
เพื่อระบุว่าบริการทำงานหรือไม่ใช้รหัสต่อไปนี้-
ActivityManager manager =(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);for (ActivityManager.RunningServiceInfo service :manager.getRunningServices(Integer.MAX_VALUE)) { if (serviceClass.getName().equals(service.service.getClassName()) )) { คืนค่าจริง; }}คืนค่าเท็จ
หากต้องการเรียกใช้เมธอดข้างต้น ให้ใช้โค้ดต่อไปนี้-
isMyServiceRunning(service.class)
ขั้นตอนที่ 4 − เพิ่มรหัสต่อไปนี้ใน manifest.xml
<หมวดหมู่ android:name ="android.intent.category.LAUNCHER" />
มาลองเรียกใช้แอปพลิเคชันของคุณกัน ฉันคิดว่าคุณได้เชื่อมต่ออุปกรณ์มือถือ Android จริงกับคอมพิวเตอร์ของคุณ ในการรันแอพจาก android studio ให้เปิดไฟล์กิจกรรมของโปรเจ็กต์แล้วคลิกไอคอน Run จากแถบเครื่องมือ เลือกอุปกรณ์มือถือของคุณเป็นตัวเลือก จากนั้นตรวจสอบอุปกรณ์มือถือของคุณซึ่งจะแสดงหน้าจอเริ่มต้นของคุณ –
ในผลลัพธ์ข้างต้นเป็นหน้าจอเริ่มต้น คลิกที่ Text view จะเริ่มให้บริการตามที่แสดงด้านล่าง –
จากผลด้านบนนี้ บริการได้เริ่มขึ้นแล้ว คลิกที่ Text View จะหยุดบริการดังภาพ -