Android 手机锁定时AlarmManager不工作

Android 手机锁定时AlarmManager不工作,android,Android,AlarmManager例如,当手机锁定时,不会启动我的广播接收器。我搜索并尝试了许多解决方案,但没有一个有效: AlarmManager mgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent i = new Intent(context, OnAlarmReceiver.class); PendingIntent pi=PendingIntent.getBroadcast

AlarmManager
例如,当手机锁定时,不会启动我的广播接收器。我搜索并尝试了许多解决方案,但没有一个有效:

 AlarmManager mgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
      Intent i = new Intent(context, OnAlarmReceiver.class);
      PendingIntent pi=PendingIntent.getBroadcast(context, 0, i, 0);

      mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                        SystemClock.elapsedRealtime()+60000,
                        PERIOD,
                        pi);
但是,
OnAlarmReceiver
永远不会被触发

我还尝试使用WakeLock

@Override
    public void onReceive(Context context, Intent intent) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
        wl.acquire();
// code
wl.release();
 }
但也不起作用。为什么?

但你的接受者永远不会被解雇


应该是。显示了类似的
AlarmManager
用法,当屏幕关闭且手机锁定时,该用法非常有效。在我的示例中,“真正的工作”是由
WakefulIntentService
通过
BroadcastReceiver
完成的,因此
BroadcastReceiver
肯定得到了控制。

添加到清单文件中了吗@senzacionale检查一下,我想会成功的。你可以发布完整的代码吗?谢谢。例如,我将OnBootReceiver更改为OnScreenChangeReceiver,但后来从未调用OnArmReceiver。我在ScreenReceiver上运行,如:
final IntentFilter intentScreenfilter=new IntentFilter(Intent.ACTION\u SCREEN\u ON);intentScreenfilter.addAction(Intent.ACTION屏幕关闭);screenReceiver=新的OnScreenReceiver();//注册接收器,以便您的服务将收听广播注册表receiver(screenReceiver,intentScreenfilter)我可以在日志中看到这一点:
12-10 16:36:00.000:E/AlarmManagerService(1990):android_服务器_AlarmManagerService_设置为type=31195102.441000000 12-10 16:36:00.015:D/keyGuardDupdateMonitor(1990):接收广播android.intent.action.TIME_TICK 12-10 16:36:00.020:D/keyGuardDupdateMonitor(1990):handleTimeUpdate 12-10 16:36:00.045:D/STATUSBAR时钟(2107):onReceive()-ACTION\u TIME\u TICK D/STATUSBAR时钟(2107):UpdateLock:16:36 D/STATUSBAR日期视图(2107):UpdateLock:D/DigitalClock(23824):DigitalClockAppWidgetService。操作:android.intent.action.TIME_TICK
以及如何在您的示例中停止AlarmManager?@senzacionale:您可以调用
AlarmManager
上的
cancel()
来取消报警,并为您计划作为报警的报警传递一个等效的
PendingEvent
。谢谢。那么错误呢?我的听筒从来没有开过。我总是得到错误:E/AlarmManagerService(1990):android_服务器_AlarmManagerService_设置为type=x