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ドキュメントにも書かれているように、なるべく再設定を行わないのが望ましい。

ブログ内の関連する記事