【问题标题】:Android Alarm Manager inconsistent for 4.4.x.What is the alternative solution to support minSDKVersion 9 and targetSdkVersion 21Android 警报管理器与 4.4.x 不一致。支持 minSDKVersion 9 和 targetSdkVersion 21 的替代解决方案是什么
【发布时间】:2015-02-11 07:39:42
【问题描述】:

我的任务是根据设置每 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);
}

我的构建设置:- 安卓:m​​inSdkVersion="9" 安卓: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 注意:警报管理器适用于您希望应用程序代码在特定时间运行的情况,即使您的应用程序当前没有运行。对于正常的计时操作(滴答声、超时等),使用 Handler 更容易、更高效。 注意:从 API 19 (KITKAT) 开始,警报传递是不精确的:操作系统将切换警报以最大程度地减少唤醒和电池使用。有新的 API 来支持需要严格交付保证的应用程序;参见 setWindow(int, long, long, PendingIntent) 和 setExact(int, long, PendingIntent)。 targetSdkVersion 早于 API 19 的应用程序将继续看到以前的行为,即所有警报都在请求时准确传递。 "

【问题讨论】:

    标签: android alarmmanager android-4.4-kitkat


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      相关资源
      最近更新 更多