
[英]My app's minSdkVersion is 14 and targetSdkVersion is 21 but Google Play judge it just support Android 4.0~4.4
[英]Android Alarm Manager inconsistent for 4.4.x.What is the alternative solution to support minSDKVersion 9 and targetSdkVersion 21
我的任务是根据设置每24小时及以上致电服务...
在Moto E 4.4.4,三星S4 4.4.2和Nexus5 4.5中,以下代码可以完美地工作5分钟2小时,但不能长时间工作(例如24小时及以上)。
以下代码甚至在Xiaomi Mi3 4.4.2中五分钟都无法正常工作,并且警报转储中也没有警报。
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);
}
我的构建设置:-使用4.4.2 SDK来构建apk的android:minSdkVersion =“ 9” android:targetSdkVersion =“ 21”。
在检查了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的应用程序将继续看到以前的行为,在该行为中,所有警报均在请求时准确地传递。”
也许考虑使用GcmNetworkManager,或者甚至更好的是,该库可以抽象作业调度: https : //github.com/evernote/android-job
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.