Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีใช้งาน START_STICKY สำหรับบริการ


ก่อนจะยกตัวอย่างเราควรรู้ว่าบริการอะไรใน Android บริการจะดำเนินการเบื้องหลังโดยไม่ต้องโต้ตอบกับ UI และทำงานได้แม้หลังจากกิจกรรมถูกทำลาย

START_STICKY - หากบริการเริ่มต้นด้วยประเภทการส่งคืน START_STICKY บริการจะทำงานในแบ็กกราวด์แม้ว่ากิจกรรมจะไม่อยู่เบื้องหน้าหาก Android ปิดบริการอย่างแรงเนื่องจากปัญหาหน่วยความจำหรือกรณีอื่นๆ บริการจะรีสตาร์ทโดยไม่มีการโต้ตอบจากผู้ใช้

ตัวอย่างนี้สาธิตวิธีใช้งาน START_STICKY สำหรับบริการ

ขั้นตอนที่ 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;นำเข้า android.annotation.TargetApi;นำเข้า android.app.Notification;นำเข้า android.app.NotificationChannel;นำเข้า android.app.NotificationManager;นำเข้า android.app.PendingIntent;นำเข้า android แอป บริการ นำเข้า android.content.Context นำเข้า android.content.Intent นำเข้า android.graphics.Color นำเข้า android.media.MediaPlayer นำเข้า android.os.Build นำเข้า android.os.IBinder นำเข้า android.support .annotation.RequiresApi;import android.support.v4.app.NotificationCompat;import android.util.Log;import android.widget.Toast;บริการคลาสสาธารณะขยายบริการ { @Override สาธารณะ IBinder onBind (เจตนาเจตนา) { ส่งคืน null; } @แทนที่โมฆะสาธารณะ onCreate() { super.onCreate(); } @TargetApi(Build.VERSION_CODES.O) @RequiresApi(api =Build.VERSION_CODES.JELLY_BEAN) @Override สาธารณะ int onStartCommand(เจตนาเจตนา แฟล็ก int int startId) { Toast.makeText (นี่ "บริการแจ้งเตือนที่เริ่มต้นโดยผู้ใช้ ", ขนมปังปิ้ง.LENGTH_LONG).show(); Log.d("Tutorialspoint.com","Services is working background"); ส่งคืน START_STICKY; } @RequiresApi(api =Build.VERSION_CODES.N) @Override public void onDestroy() { super.onDestroy(); Toast.makeText(นี่คือ "บริการแจ้งเตือนถูกทำลายโดยผู้ใช้", Toast.LENGTH_LONG).show(); }}

ในโค้ดด้านบนนี้ เราเรียกว่า START_STICKY ตอนนี้ให้ตรวจสอบข้อมูลการบริการตามที่แสดงด้านล่าง –

วิธีใช้งาน START_STICKY สำหรับบริการ

ขั้นตอนที่ 4 − เพิ่มรหัสต่อไปนี้ใน manifest.xml

     <หมวดหมู่ android:name ="android.intent.category.LAUNCHER" />    

มาลองเรียกใช้แอปพลิเคชันของคุณกัน ฉันคิดว่าคุณได้เชื่อมต่ออุปกรณ์มือถือ Android จริงกับคอมพิวเตอร์ของคุณ ในการรันแอพจาก android studio ให้เปิดไฟล์กิจกรรมของโปรเจ็กต์แล้วคลิกไอคอน Run จากแถบเครื่องมือ เลือกอุปกรณ์มือถือของคุณเป็นตัวเลือก จากนั้นตรวจสอบอุปกรณ์มือถือของคุณซึ่งจะแสดงหน้าจอเริ่มต้นของคุณ –

วิธีใช้งาน START_STICKY สำหรับบริการ

ในผลลัพธ์ข้างต้นเป็นหน้าจอเริ่มต้น คลิกที่ Text view จะเป็นการเริ่มบริการแจ้งเตือนดังที่แสดงด้านล่าง –

วิธีใช้งาน START_STICKY สำหรับบริการ

จากผลด้านบนนี้ บริการได้เริ่มขึ้นแล้ว คลิกที่ Text View จะหยุดให้บริการแจ้งเตือนดังภาพ -

วิธีใช้งาน START_STICKY สำหรับบริการ