3
AlarmManager mgr=
      (AlarmManager)ctxt.getSystemService(Context.ALARM_SERVICE);
  Intent i=new Intent(ctxt, AlarmReceiver.class);
  PendingIntent pi=PendingIntent.getBroadcast(ctxt, 0, i, 0);
mgr.setRepeating(
  AlarmManager.ELAPSED_REALTIME_WAKEUP,
  System.currentTimeMillis() + 1000,
  1000, pi);

アンドロイドドキュメントによると

(アラームの種類に応じて)適切なクロックを使用して、アラームが最初に鳴る必要があるミリ秒単位のtriggerAtMillis時間。

アクションは1秒後に開始する必要がありますが、呼び出されることはありません。なぜですか。

4

2 に答える 2

8

AlarmManager.ELAPSED_REALTIME_WAKEUPsetRepeating()メソッドの代わりに、AlarmManager.RTC_WAKEUP以下のように使用します。

mgr.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis() + 1000, 1000, pi);
于 2012-11-16T08:13:27.767 に答える
6

私はかなりグーグルしますが、誰も同じ問題に遭遇しないようです。最後に、代わりにSystemClock.elapsedRealtime()を使用する必要があることがわかりました。

triggerAtMillisの場合、タイプはAlarmManager.ELAPSED_REALTIME_WAKEUPであるため、System.currentTimeMillis()の代わりにSystemClock.elapsedRealtime()を使用する必要があります。

問題は解決しました。

于 2012-11-16T08:10:39.890 に答える