在我的应用程序中,我有一项服务,我以这种方式使用AlarmManager:
AlarmManager am =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, getIntent(), PendingIntent.FLAG_UPDATE_CURRENT);
long mills = SystemClock.elapsedRealtime();
mills += time;
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, mills, pi);
这是我对am的意图的接收者:
if (intent.getAction().equals(Timer3GOn.intentExtra)) {
//some code
}
以下是我的应用的工作原理:
当屏幕继续时(我收到Intent.ACTION_USER_PRESENT
)我设置一个AlarmManager,在一定时间后发送我的班级收到的意图Timer3GOn.intentExtra
。
所有这些都可以正常工作,除了Android 4.4.2(尚未在4.4.1中测试过,但在4.4中它运行良好)。仅在android 4.4.2中,如果我从设备的“最近的应用程序列表”中删除我的应用程序,则设置正确,但我的应用程序从未收到过该意图;加上服务中的所有代码仍然像卡住了。所以我的应用程序停止工作,但服务仍然在RAM中。
当我从最近的应用列表中删除我的应用时问题没有开始,但只有在我这样做并且设置了AlarmManager之后。如何解决问题?
P.S。在我的应用程序中,我在同一个班级中有CountDownTimer
,具有相同的上下文,并且运行良好!
P.P.S。我注意到whatsapp有同样的问题,如果你从最近的应用程序中删除它,所有传入的消息都没有交付,直到我打开程序。这只是我或者这种情况发生在所有4.4.2安卓版本中?
答案 0 :(得分:0)
启动android 4.4,您必须使用setExact()
才能在准确的时间内执行警报
否则,操作系统决定何时执行警报。