AlarmManager Android 4.4.2错误
在我的应用程序中,我有一项服务,我使用AlarmManager的方式如下: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 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,在一定时间后发送我的类收到的IntentTimer3GOn.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的上下文来自BroadcastReceiverpublic 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{