首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于4.4.x.What的安卓警报管理器不一致是支持minSDKVersion 9和targetSdkVersion 21的替代解决方案

用于4.4.x.What的安卓警报管理器不一致是支持minSDKVersion 9和targetSdkVersion 21的替代解决方案
EN

Stack Overflow用户
提问于 2015-02-11 15:39:42
回答 1查看 461关注 0票数 1

我的任务是根据设置每24小时或更长时间调用服务...

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

以下代码在小米Mi3 4.4.2中5分钟都不能工作,在告警转储中也不存在告警。

代码语言:javascript
复制
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);
}

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

EN

回答 1

Stack Overflow用户

发布于 2016-03-17 15:35:36

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28448958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档