7

私のアプリでは、アラームを設定しました

AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
...
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
...
alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), pendingIntent);

電話の電源を切って入れない限り、問題なく動作します。

具体的には、10:20にアラームを10:22に設定し、10:21に電話の電源をオフにしてからオンにすると、アラームが機能しなくなります。

何が問題なのでしょう?それはpendingIntentのブロードキャストの問題ですか、それともそのような状況で機能するようにalarmManagerオブジェクトのフラグを設定する必要がありますか?

4

1 に答える 1

19

AlarmManagerに関するドキュメントには、次のように書かれています。

登録されたアラームは、デバイスがスリープしている間は保持されます(また、その間にデバイスがオフになった場合は、オプションでデバイスをウェイクアップできます)が、オフにして再起動するとクリアされます。

Androidにデフォルトで含まれているAlarmClockは、再起動後も機能するようです。

再起動後もアラームを機能させ続けるには、起動が完了したときにアプリケーションを起動し、AlarmManagerを使用してすべてのアラームを再度設定します。(実際には、アプリを起動するのではなく、ブロードキャストを使用してアラームを設定することをお勧めします)

これは、起動時にアプリをランチすることに関するStackOverflowの質問です

また、ソースから読み取ることにより、デフォルトのAlarmClockがこれをどのように行うかを確認する必要があります。ここから読んでダウンロードできます

于 2012-01-08T01:35:03.460 に答える