Saya perlu memulai layanan saat boot. Saya banyak mencari. Mereka berbicara tentang Penerima Siaran. Karena saya baru mengenal pengembangan Android, saya tidak mendapatkan gambaran yang jelas tentang layanan di Android. Berikan beberapa kode sumber.
android
autostart
bootcompleted
Harish
sumber
sumber
startForeground()
dalam layanan Anda. Jika tidak, Android dan penggunanya akan mematikan layanan Anda sebagai pemborosan ruang, dan Anda akan mendapatkan beberapa komentar tidak menyenangkan di Android Market. Dalam kebanyakan situasi di mana Anda merasa ingin layanan dimulai pada waktu boot, Anda lebih baik dilayani menggunakanAlarmManager
sehingga layanan Anda dapat berjalan secara berkala daripada terus menerus .AlarmManager
setelah restart, Anda harus mengikuti langkah-langkah yang sangat mirip (perbedaannya terletak pada kontenonReceive
metode)Jawaban:
Buat
BroadcastReceiver
dan daftarkan untuk menerima ACTION_BOOT_COMPLETED . Anda juga membutuhkan izin RECEIVE_BOOT_COMPLETED .Baca: Mendengarkan dan Menyiarkan Pesan Global, dan Mengatur Alarm
sumber
Penerima Anda:
AndroidManifest.xml Anda:
sumber
Dari http://www.jjoe64.com/2011/06/autostart-service-on-device-boot.html
sumber
android.intent.category.LAUNCHER
!Sebagian besar solusi yang diposting di sini kehilangan bagian penting: melakukannya tanpa kunci pengaktifan menjalankan risiko Layanan Anda terbunuh sebelum selesai diproses. Melihat solusi ini di utas lain, menjawab di sini juga.
Karena WakefulBroadcastReceiver sudah tidak digunakan lagi dalam api 26, direkomendasikan untuk API Level di bawah 26
Anda perlu mendapatkan penguncian layar saat aktif. Untungnya, pustaka Dukungan memberi kita kelas untuk melakukan ini:
kemudian, di Layanan Anda, pastikan untuk melepaskan kunci layar aktif:
Jangan lupa untuk menambahkan izin WAKE_LOCK dan daftarkan penerima Anda di manifes:
sumber
Anda harus mendaftar BOOT_COMPLETE serta REBOOT
sumber
Juga daftarkan layanan yang Anda buat di Manifes dan izin penggunaan sebagai
dan kemudian di braod cast Reciever memanggil layanan Anda
sumber
Pertama-tama daftarkan penerima di file manifest.xml Anda:
dan kemudian tulis siaran untuk penerima ini seperti:
sumber
Untuk Restart layanan di
Android O
atau lebih yaitu OS> 28 Gunakan kode ini KOTLIN VERSION 1) Tambahkan izin dalam manifes2) Buat
Class
dan perpanjang denganBroadcastReceiver
3) Deklarasikan dalam file Manifest seperti ini di bawah tag aplikasi
sumber
Tolong periksa JobScheduler untuk apis di atas 26
WakeLock adalah opsi terbaik untuk ini tetapi tidak digunakan lagi di api level 26. Silakan periksa tautan ini jika Anda mempertimbangkan level api di atas 26
https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html# startWakefulService (android.content.Context,% 20android.content.Intent)
Ia mengatakan
sehingga dikatakan cosider JobScheduler
https://developer.android.com/reference/android/app/job/JobScheduler
jika ingin melakukan sesuatu selain memulai dan untuk mempertahankannya, Anda dapat menerima siaran ACTION_BOOT_COMPLETED
Jika ini bukan tentang latar depan, periksa apakah layanan Aksesibilitas dapat melakukannya
opsi lain adalah memulai aktivitas dari penerima siaran dan menyelesaikannya setelah memulai layanan dalam onCreate (), karena versi android yang lebih baru tidak memungkinkan memulai layanan dari penerima
sumber