0

特定の時間にサービスを停止するように設定するときは、AlarmManager システム サービスを使用します。すべてが問題なく終了し、サービスが呼び出されてアクションが実行されます。

アラーム時刻になるとサービスが開始され、この時点でシステム時刻 (System.currentTimeMillis()) を取得します。これは実際のサービス開始時間ではないと思います。この PendingIntent に設定された時間を取得する方法はありますか?

すなわち

アラームを午前 9 時に設定します。
DoStuffService は午前 9 時に開始されます。
DoStuffService は、午前 9 時に開始するはずだったことを認識しており、この値を今後の機能に使用します。

4

2 に答える 2

4

アラームのインテントを作成するときは、次のように、アラームの時刻などの追加データをその中に入れることができます。

Intent intent = new Intent("action name");

//put extra data into the intent:
intent.putExtra("alarm_time_hours", hours);
intent.putExtra("alarm_time_minutes", minutes);

PendingIntent sender = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);

次に、レシーバーまたはサービスで、受信したインテントからこの追加データを取得する必要があります。次のようなものを使用します。

Bundle bundle = intent.getExtras();
if(bundle.containsKey("alarm_time_hours")) {
    int hours = bundle.getInt("alarm_time_hours");
}
if(bundle.containsKey("alarm_time_minutes")) {
    int minutes = bundle.getInt("alarm_time_minutes");
}
于 2012-02-18T23:18:58.703 に答える
0

この PendingIntent に設定された時間を取得する方法はありますか?

いいえ、申し訳ありません。

ただし、自分で判断するのはそれほど難しいことではありません。例に従って、サービスが現在 09:00:02.36 であると報告した場合、切り捨てて、これが午前 9 時のアラームであると判断できるはずです。

于 2011-02-13T15:26:12.037 に答える