« Android AlarmManager 3 サービスでの受け取り | メイン | Android RSSReader OPML対応 »

Android AlarmManager 4 アラームが消えるとき

AndroidのAlarmManagerでは、以下の時設定したアラームが自動的にクリアされる。

  1. アプリケーションがアンインストールされた時
  2. アプリケーションがバージョンアップインストールされた時
  3. 電源オフされたとき

上記3点についての調査結果

アプリケーションがアンインストールされた時

この時は、AlarmManagerがアンインストールを自動的に検知し、以後ブロードキャストやサービスの呼び出しを行わない
特に問題なし

アプリケーションがバージョンアップインストールされた時

この時もAlarmManagerにより自動的にアラーム設定が消えてしまうが、ユーザにとっては、アプリケーションの使用を継続するにも関わらず、設定が消えてしまうという問題が発生する。
色々調査を行ったが、この問題は現在解決できない。

電源をオフにした時

電源をオフにしたときもアラーム設定が消えてしまう。
電源オフ - 電源オンにしたときに自動的に再度アラームを設定するには、システムから投げられる、Intent.ACTION_BOOT_COMPLETEDのブロードキャストを受け取ることで処理を行う。


public class AlarmInitReceiver extends BroadcastReceiver {

    /**
     * Sets alarm on ACTION_BOOT_COMPLETED. 
     */
    @Override
    public void onReceive(Context context, Intent intent) {
        
        if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {

        	//ここでアラームの再セットを行う
        }
    }
}

注意点としては、PCとは異なり、携帯電話で電源をOFFにするということはあまりないということである。 Androidで電源をオフにする時は、何か問題が発生した(何かのソフトウェアがハングした、Androidの動作がもっさりとした)時が考えられる。再起動をした時に自動的に再設定をしてしまうのは、便利なのか、お節介なのか、判断が分かれるところである。
ソフトウェアの性質にもよるが、SDKドキュメントにも書かれているように、なるべく再設定を行わないのが望ましい。

ブログ内の関連する記事

トラックバック

このエントリーのトラックバックURL:
http://www.taosoftware.co.jp/mt/mt-tb.cgi/146

この一覧は、次のエントリーを参照しています: Android AlarmManager 4 アラームが消えるとき:

» Android AlarmManager 5 システムブロードキャスト from Taosoftware
AndroidのAlarmManagerの最後の記事 AlarmManager... [詳しくはこちら]