手机锁定时,AlarmManager无法正常工作

时间:2012-12-10 11:45:01

标签: android

例如,当电话被锁定时,

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

但也不行。为什么呢?

1 个答案:

答案 0 :(得分:1)

  

但OnAlarmReceiver永远不会被解雇!

应该是。 Here is a sample project显示AlarmManager的类似用法,当屏幕关闭且手机被锁定时,该功能完全正常。在我的示例中,“实际工作”由WakefulIntentService通过BroadcastReceiver完成,因此BroadcastReceiver肯定会获得控制权。