11

RTC、RTC_WAKEUP、ELAPSED_REALTIME、ELAPSED_REALTIME_WAKEUPの違いを知りたいです。
アラームを設定してアプリケーションを閉じ、設定された時間のアラームを期待するアラームアプリケーションを作成したいと考えています。
複数のアラームが発生します。現在、エミュレータ用に書いていますが、後でデバイスでテストします。エミュレーターでは、アラームを設定してエミュレーターを閉じて再起動すると、RTC、RTC_WAKEUP、ELAPSED_REALTIME でわかるようにクリアされます。私は混乱しています。ELAPSED_REALTIME_WAKEUP を使用する必要がありますか? ELAPSED_REALTIME_WAKEUP を使用したチュートリアルは見たことがありません。説明してください。ありがとう。

4

4 に答える 4

18

ELAPSED_REALTIME

SystemClock.elapsedRealtime() のアラーム時刻 (スリープを含む起動からの時間)。このアラームはデバイスを起動しません。デバイスがスリープしている間にオフになった場合、次にデバイスがウェイクアップするまで配信されません。

ELAPSED_REALTIME_WAKEUP

SystemClock.elapsedRealtime() のアラーム時間 (スリープを含む、起動からの時間)。オフになったときにデバイスをウェイクアップします。

RTC

System.currentTimeMillis() のアラーム時間 (UTC の壁時計時間)。このアラームはデバイスを起動しません。デバイスがスリープしている間にオフになった場合、次にデバイスがウェイクアップするまで配信されません。

RTC_WAKEUP

System.currentTimeMillis() のアラーム時間 (UTC の壁時計時間)。オフになったときにデバイスをウェイクアップします。

于 2011-10-17T07:21:21.120 に答える
11

アラームの種類:

  • ELAPSED_REALTIME – デバイスの起動から指定された時間が経過すると、保留中のインテントを起動します。デバイスがスリープ状態の場合、デバイスが次に起動したときに起動します。
  • ELAPSED_REALTIME_WAKEUP – デバイスの起動から指定された時間が経過すると、保留中のインテントを起動します。デバイスがスリープ状態の場合、デバイスをウェイクアップします。
  • RTC – 指定された時間に保留中のインテントを起動します。デバイスがスリープ状態の場合、次にデバイスがウェイクアップするまで配信されません。
  • RTC_WAKEUP – 指定された時間に保留中のインテントを起動し、スリープしている場合はデバイスをウェイクアップします。
于 2015-03-09T09:19:56.433 に答える
1

アラームには、「経過リアルタイム」と「リアルタイム クロック (RTC)」の 2 つの一般的なクロック タイプがあります。経過リアルタイムは「システム起動からの時間」を基準とし、リアルタイムクロックはUTC(壁時計)時間を使用します。これは、経過リアルタイムはタイムゾーン/ロケールの影響を受けないため、時間の経過に基づいてアラームを設定するのに適していることを意味します (たとえば、30 秒ごとに発生するアラーム)。リアルタイム クロック タイプは、現在のロケールに依存するアラームに適しています。

ソース: https://developer.android.com/training/scheduling/alarms.html

于 2016-11-08T18:27:07.310 に答える
0

サイトから、4 つの定数の違いを取得できます。以下は、アラームの設定例です。

Calendar mCalendar = Calendar.getInstance();
        mCalendar.add(Calendar.SECOND, 20);
        Intent intent_Timer = new Intent(TimerEvents.this, AlarmReceiver.class);
        intent_Timer.putExtra("alarm_message", "Drax Rules!!!");
        // In reality, you would want to have a static variable for the request
        // code instead of 192837
        PendingIntent sender = PendingIntent.getBroadcast(this, 192837,
                intent_Timer, PendingIntent.FLAG_UPDATE_CURRENT);
        // Get the AlarmManager service
        AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
        am.set(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), sender);

これがお役に立てば幸いです

于 2011-02-24T08:47:01.610 に答える