例如,
当手机被锁定时,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();
}
但也不行。为什么?
但 OnAlarmReceiver 从未被触发!
应该是。这是一个示例项目,显示了类似的AlarmManager
用法,当屏幕关闭且手机锁定时,该用法工作正常。在我的样本中,"真正的工作"是由WakefulIntentService
通过BroadcastReceiver
完成的,所以BroadcastReceiver
肯定得到了控制。