AlarmManager Android 4.4.2错误

AlarmManager Android 4.4.2错误,android,Android,在我的应用程序中,我有一项服务,我使用AlarmManager的方式如下: AlarmManager am =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); PendingIntent pi = PendingIntent.getBroadcast(context, 0, getIntent(), PendingIntent.FLAG_UPDATE_CURRENT); long mills = System

在我的应用程序中,我有一项服务,我使用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);
这是我的调幅意图的接收者:

if (intent.getAction().equals(Timer3GOn.intentExtra)) {         
    //some code     
}
以下是我的应用程序的工作原理: 当屏幕打开时(我收到
Intent.ACTION\u USER\u PRESENT
),我设置一个AlarmManager,在一定时间后发送我的类收到的Intent
Timer3GOn.intentExtra

除了安卓4.4.2(还没有在4.4.1中测试过,但在4.4中效果很好)之外,所有这些都可以正常工作。只有在android 4.4.2中,如果我从设备的“最近的应用程序列表”中删除我的应用程序,am设置正确,但我的应用程序从未收到意图;另外,服务中的所有代码仍然像卡住了一样。所以我的应用程序停止工作,但服务仍在内存中

当我从最近的应用程序列表中删除我的应用程序时,问题不会出现,但只有在我这样做并设置AlarmManager之后才会出现。如何解决这个问题

另外,在我的应用程序中,我有一个
倒数计时器
,在同一个类中,具有相同的上下文,它工作得很好


p.p.S.我注意到whatsapp也有同样的问题,如果你从最近的应用程序中删除它,所有传入的消息在我打开程序之前都不会被发送。只有我一个人,或者所有4.4.2 android版本都会发生这种情况?

启动android 4.4时,您必须使用
setExact()
,以便在准确的时间内执行警报。

否则,它将由操作系统决定何时执行报警。

首选项中存储的长值如果您在清单中将应用程序设置为
android:excludeFromRecents=“true”
,则工作正常?您是否使用
ApplicationContext
作为AM的上下文?AM的上下文来自BroadcastReceiver
public void onReceive(上下文上下文,意图-意图)
因为我在
意图之后启动AM。操作屏幕关闭
android:excludeFromRecents=“true”是一个很好的解决方法,但是如果活动显示并且“最近的应用程序”打开,仍然可以从中删除活动(android bug?)。是的,但根据“当您将应用程序的targetSdkVersion设置为“19”或更高时”我的应用程序targetSdkVersion为17,因此我不必使用
setExact()
。我已尝试将targetSdkVersion设置为19并使用
setExact()
但Eclipse给我此错误“类型AlarmManager的方法setExact(int,long,PendingEvent)未定义“您必须通过项目属性将SDK 19设置为您的目标版本。如果我将SDK设置为19(我忘记在项目属性中设置)并使用
setExact()
问题仍然是一样的。:(您是否使用库中的
receiver
接收器?接收器在我自己的类
公共类ScreenBR extends BroadcastReceiver{