タイトル通り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) {
//定期処理を記述
}
}
}
}