2

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();
 }

但也不工作。为什么?

4

1 回答 1

1

但 OnAlarmReceiver 永远不会被解雇!

它应该是。这是一个示例项目,显示了类似的用法,AlarmManager当屏幕关闭并且手机被锁定时,它工作得非常好。在我的示例中,“真正的工作”是由 a 完成的WakefulIntentService,通过 a BroadcastReceiver,所以BroadcastReceiver绝对得到了控制。

于 2012-12-10T12:09:27.393 回答