0から始めるAndroid ~常駐アプリを作る BroadcastReceiverは死ぬ編~

タイトル通りBroadcastReceiverは死ぬ。いや、死ぬかも知れない。
以前に作成したDoCoMoのSPモードメール、SMS、Gmailなどの
メールを受信時に起動するアプリでは気づかなかったが、
BroadcastReceiverの仕様で「10秒以内に処理が完了しないと停止する」ということだ。
ここで問題なのは、onReceiveが中断されることよりも
BroadcastReceiver自身が停止してしまうことである。
一旦停止されると、ユーザ操作により再度起動するしかない。
ちなみに今回作ろうとしているアプリは、
GPSを一定間隔で取得、Googleサービスにアクセスしてデータ登録及び取得するという代物で
10秒ルールを守れないことも多々ある。

下記の方法では、停止する可能性あり。


public class SampleActivity extends Activity {

 private BroadcastReceiver receiver;

 @Override
 public void onCreate(Bundle savedInstanceState) {

  IntentFilter filter = new IntentFilter();
  filter.addAction(Intent.ACTION_TIME_TICK); //毎分

  receiver = new BroadcastReceiver() {
   @Override
   public void onReceive(Context context, Intent intent) {
    //定期処理を記述

   }
  }
 }
}