2015-02-11 115 views
1

我的任务是调用服务的每一个24小时及以上的基础上,设置...的Android报警经理4.4.x.What不一致是替代解决方案来支持的minSdkVersion 9和targetSdkVersion 21

下面的代码完美工作5分钟,2小时,但不工作长时间如24小时以上在Moto E 4.4.4,三星S4 4.4.2和Nexus5 4.5 ..

以下代码甚至不工作5分钟小米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); 
} 

我的生成设置: - 安卓的minSdkVersion = “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)。 e targetSdkVersion早于API 19将继续看到之前的行为,即所有报警在请求时都准确传送。 “

回答