Pertanyaan AlarmManager tidak berfungsi di beberapa perangkat


Aplikasi saya menggunakan AlarmManager dan telah berfungsi sejak 4 tahun lalu. Tapi saya perhatikan itu mulai gagal di beberapa perangkat.

Saya cukup yakin kode benar (saya menggunakan WakefulBroadcastReceiver, dan setExactAndAllowWhileIdle untuk perangkat dengan Doze) karena berfungsi dengan baik pada perangkat Nexus, tetapi gagal di perangkat beberapa produsen (Huawei, Xiaomi ...).

Perangkat Huawei, misalnya, memiliki semacam manajer baterai yang membunuh aplikasi, dan ketika suatu aplikasi terbunuh, alarm terjadwal dibatalkan. Jadi mengatur aplikasi sebagai "terlindung" dalam manajer baterai Huawei memecahkan masalah.

Tetapi baru-baru ini saya perhatikan itu tidak bekerja dengan lebih banyak perangkat: Xiaomi, Samsung (mungkin itu terkait dengan "Smart Manager" yang baru?) ... Sepertinya perilaku ini menjadi standar: untuk membunuh aplikasi latar belakang.

Apakah ada yang tahu tentang hal ini? Ada cara untuk memastikan alarm diaktifkan?


76
2018-01-11 19:56


asal


Jawaban:


Saya mencoba menyelesaikannya beberapa minggu. Saya tidak menemukan apa pun. Huawei hanya mematikan semua alarm setelah beberapa waktu. Jika saya meletakkan aplikasi ke aplikasi yang dilindungi di penghemat baterai mereka, itu tidak membantu. Tetapi jika saya mengubah nama paket aplikasi saya untuk memuat kata-kata seperti alarm, jam atau kalender, itu berfungsi seperti biasa pada perangkat lain. Saya tidak mengerti bagaimana Google dapat memberikan sertifikasi untuk omong kosong ini. Saya berpikir bahwa OEM tidak boleh memodifikasi platform inti dengan cara seperti itu. Saya mengerti bahwa mereka memiliki penghemat baterai sendiri yang membunuh aplikasi setelah beberapa waktu, ketika pengguna tidak menggunakannya. Tapi alarm membunuh ini juga dari aplikasi yang dilindungi.

Juga setAlarmClock () untuk alarm waktu yang tepat membantu. Tetapi tidak mungkin menggunakan ini untuk berpikir seperti pembaruan widget.


9
2018-02-05 11:34



Masalahnya adalah Smart Manager. Samsung memiliki manajer baterai yang kadang-kadang menonaktifkan aplikasi tertentu agar tidak berjalan di latar belakang. Ini mencoba untuk "melanjutkan" ketika kembali ke aplikasi tetapi benar-benar menonaktifkan aplikasi atau dapat melanjutkan setiap 5 menit atau lebih (tergantung bagaimana Samsung memilikinya).

Ini akan bekerja pada versi stok android karena tidak ada Samsung Manager. Anda juga dapat menginstal versi khusus dari android yang memiliki beberapa fitur untuk mengaktifkan SM (tergantung pada rom).


8
2018-01-20 02:02



Gunakan AlarmManager untuk <5.0 perangkat, dan JobScheduler untuk perangkat 5.0+. Saya tidak bisa mengatakan dengan pasti bahwa JobScheduler tidak akan terpengaruh oleh produsen shenanigans, tetapi tampaknya sangat kecil kemungkinannya bagi saya, mengingat bahwa Android mencoba untuk memindahkan orang-orang dari AlarmManager dan ke JobScheduler.


2
2018-06-01 21:10



Saya berhenti menggunakan AlarmManager beberapa waktu lalu ... alternatif yang lebih baik dan lebih stabil

  1. buat layanan
  2. daftarkan BroadcastReceiver untuk BOOT_COMPLETED
  3. api layanan Anda dari penerima
  4. memulai Handler baru di dalam layanan Anda yang mengulang sendiri setiap X menit (Android - menjalankan metode secara berkala menggunakan panggilan postDelayed ())
  5. periksa apakah waktu untuk menjalankan tugas telah datang: sekarang - waktu eksekusi> 0 (Bagaimana menemukan durasi perbedaan antara dua tanggal di java?)
  6. jika demikian .. jalankan tugas dan hentikan pawang

ya .. itu menyebalkan..tetapi pekerjaan diselesaikan TIDAK ADA MASALAH APA


1
2018-01-19 21:23



Apakah Anda mendengarkan BOOT_COMPLETED? Anda perlu mengatur alarm lagi saat perangkat di-boot ulang.


1
2018-01-20 01:57



Saya juga memiliki aplikasi yang mengatur alarm. Solusinya adalah menggunakan AlarmManager.setAlarmClock () pada api> = 21. Hal ini tidak terpengaruh oleh doze afaik dan memiliki bonus tambahan menempatkan ikon jam alarm di baki sistem.


1
2018-01-28 08:00



Sebagian besar perangkat Android modern dilengkapi dengan aplikasi atau mekanisme, yang secara otomatis mencoba mencari cara untuk menghemat baterai dan akibatnya dapat membunuh aplikasi pihak ketiga tertentu. Ini mungkin mengakibatkan penghapusan tugas dan tugas terjadwal, (misalnya alarm tidak padam, notifikasi push tidak berfungsi, dll.). Dalam banyak kasus ini terjadi benar-benar independen dari mekanisme penghemat baterai Android, dalam kasus saya saya tidak bisa membuat optimasi baterai lebih ketika saya mendeteksi beberapa model perangkat, saya mengarahkan pengguna ke start up manager ke daftar putih aplikasi saya

Anda menemukan di tautan ini untuk setiap model maksud yang harus Anda lakukan https://android-arsenal.com/details/1/6771 


1
2017-08-01 11:19