AlarmManager Android 4.4.2 bug

时间:2013-12-17 17:06:58

标签: android

在我的应用程序中,我有一项服务,我以这种方式使用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安卓版本中?

1 个答案:

答案 0 :(得分:0)

启动android 4.4,您必须使用setExact()才能在准确的时间内执行警报 否则,操作系统决定何时执行警报。