gpt4 book ai didi

Android Alarm Manager 与 4.4.x 不一致。支持 minSDKVersion 9 和 targetSdkVersion 21 的替代解决方案是什么

转载 作者:行者123 更新时间:2023-11-30 02:21:33 25 4
gpt4 key购买 nike

我的任务是根据设置每 24 小时及以上时间调用服务...

以下代码在 Moto E 4.4.4、samsung S4 4.4.2 和 Nexus5 4.5 中可以完美运行 5 分钟、2 小时,但不能长时间运行,如 24 小时及以上。

以下代码在小米 Mi3 4.4.2 中甚至无法运行 5 分钟,而且警报转储中也没有警报..

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
am2.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 86400000, pi);
} else {
am2.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 86400000, pi);
}

我的build设置:- android:minSdkVersion="9" android:targetSdkVersion="21" 使用 4.4.2 sdk 构建 apk...

在查看 API 引用资料后,我了解到 Android 4.4x 及更高版本的警报不一致...如何使精确警报从 minSdkVersion 9 兼容到 19 及更高版本。我花了更多的时间来分析和调试,因为我必须等待 24 小时甚至更长时间才能检查警报服务调用。提供提示或解决方案将非常有帮助和赞赏

" https://developer.android.com/about/versions/android-4.4.html http://developer.android.com/reference/android/app/AlarmManager.html注意:Alarm Manager 适用于您希望在特定时间运行应用程序代码的情况,即使您的应用程序当前未运行。对于正常的计时操作(滴答、超时等),使用 Handler 更容易、更有效。注意:从 API 19 (KITKAT) 开始,警报传送不准确:操作系统将转移警报以尽量减少唤醒和电池使用。有新的 API 来支持需要严格交付保证的应用程序;参见 setWindow(int, long, long, PendingIntent) 和 setExact(int, long, PendingIntent)。 targetSdkVersion 早于 API 19 的应用程序将继续看到以前的行为,即所有警报都在请求时准确传递。 "

最佳答案

也许考虑使用 GcmNetworkManager或者,更好的是,这个抽象作业调度的库:https://github.com/evernote/android-job

关于Android Alarm Manager 与 4.4.x 不一致。支持 minSDKVersion 9 和 targetSdkVersion 21 的替代解决方案是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28448958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com