一通りアラームの設定はやりましたが、まだ他にいくつか注意点があるのでそれを書きます。
アラーム設定の上書きについてアラームに設定するインテントが同じ内容のものだと上書きされます。
これは再設定するような場合には便利だとは思いますが、パラメーターが違うインテントを別々に設定したい場合などで困ると思います。
インテントの内容比較は、Action、Data、Type、Class、Categories、らしいです。
なのでいづれかの影響の無い項目を設定すれば別のインテントと判別されます。
例として、setTypeやsetDataにダミーデータを入れておけば別のインテントと認識されます。
アラーム設定が消える時AlarmManagerは、cancel関数以外でもキャンセルしてしまう場合があります。
それは下記の状態のときです。
- 端末の電源をオフにした時
- アプリをアンインストールした時
- アプリをバージョンアップインストールした時
電源オフ時は、アラームが解除されてしまうと問題が起こる可能性があります。
Broadcastの「BOOT_COMPLETED」がシステム起動完了時に送信されるので、これを受信すればできます。
この内、アンインストール時は、むしろアラームを解除してもらわないと困るくらいなので問題なしです。
一応、Broadcastの「ACTION_PACKAGE_REMOVED」がアプリが削除された時に送信されるので、こちらで処理しても良いかと思います。
バージョンアップ時は、アラームが解除されてしまうと問題が起こる可能性があります。
Broadcastの「ACTION_PACKAGE_REPLACED」が既存アプリが上書きインストールされた時に送信されるので、これを受信すればできると思います。
しかし、実際にこれはなかなかテストできないので、本当にできるかはわかりません。
テストはコマンドラインからインテントを発行すれば一応できます。
つまり、全部Broadcastで処理しておけば問題無さそうです。
システム時間変更への対応ユーザーは、端末のシステム時間を変更することができます。
時刻変更、日付変更、タイムゾーン変更と3種類の方法で変えられます。
これらのタイミング時にアラームを再設定すれば良いので、これもまた、Broadcastを受信するようにします。
「TIME_SET」、「TIMEZONE_CHANGED」、「DATE_CHANGED」です。
まとめ考慮すべきBroadcastを列挙しておきます。
これらを受信した際にアラームを再設定するようにすれば問題ないと思います。
- BOOT_COMPLETED
- (ACTION_PACKAGE_REMOVED)
- ACTION_PACKAGE_REPLACED
- TIME_SET
- TIMEZONE_CHANGED
- DATE_CHANGED
これで、アラーム関連は終わりにします。
- 2011/02/13(日) 17:29:22|
- アプリ開発入門
-
| トラックバック:0
-
| コメント:0