Har*_*hra 5 android alarmmanager
我正在使用AlarmManager在某个时间调用一个函数。它在 Genymotion Emulator 中成功运行,但在真实设备(如 Redmi、Honor 等)中无法运行。这是代码。
Intent intent = new Intent(CreateContact.this, DeleteContactReceiver.class);
intent.putExtra("name", name.getText().toString());
intent.putExtra("phone", phoneNumber.getText().toString());
PendingIntent pendingIntent = PendingIntent.getBroadcast(
getApplicationContext(), (int) System.currentTimeMillis(), intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ (selected * 60000), pendingIntent);
Run Code Online (Sandbox Code Playgroud)
该min SDK版本21。
编辑:我尝试使用setAndAllowWhileIdle但它仍然无法正常工作。
有什么建议?
使用 androidx WorkManager库代替所有调度服务。
WorkManager API 是所有以前的 Android 后台调度 API 的合适且推荐的替代品
https://developer.android.com/topic/libraries/architecture/workmanager
WorkManager所做的就是包装所有现有的调度服务,并根据可用的、API 级别等使用最合适的服务,甚至照顾兼容性问题和系统 bug。
一些教程:
https://medium.com/androiddevelopers/introducing-workmanager-2083bcfc4712
https://www.programmerought.com/article/82731596284/
https://medium.com/swlh/periodic-tasks-with-android-workmanager-c901dd9ba7bc
在某些设备上(特别是低端设备和中国制造商),应用程序不允许执行后台功能(如果应用程序未运行),除非用户明确启用此功能。这是为了防止恶意应用程序通过执行后台活动来耗尽电池。
要解决此问题,您需要手动将应用程序添加到“受保护的应用程序”列表或“允许在后台运行”的应用程序列表。要将您的应用程序添加到此列表,您需要转到适当的设置。这在不同的设备上有所不同,但通常可以在“电源管理”或“安全”设置中找到。
在荣耀设备上,可以在“电池管理器->受保护的应用程序”中找到它
对于小米设备,请参阅https://dontkillmyapp.com/xiaomi
| 归档时间: |
|
| 查看次数: |
2438 次 |
| 最近记录: |