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私のサンプルでは、​​「実際の作業」はWakefulIntentService、によって、によって行われるBroadcastReceiverため、BroadcastReceiverは確実に制御されています。

于 2012-12-10T12:09:27.393 に答える