[android]バックグラウンドのサービスが停止する

hidaka

2009/09/18

TAG
android

常駐系アプリを作成する際、処理をバックグラウンドでサービスで走らせることがありますが、Timerなどでループ処理をしていた場合、停止してしまうことがあります。

これはバグではなくメモリ不足時にバックグラウンド処理を止めるというのはOS上の仕様ですが、Timerを止められると負荷が軽くなった後も再実行されません。スレッド等、中の処理を変えて試してみたのですが、Timerだとどうしても止まります。

そこで多少精度は落ちるだろうと考えられましたがここだけalarmmanagerで代用してみたところ重い処理が入ったときには遅れることがありますが止まることなく動作しました。ループの精度もTimerとの差はあまり感じられません。
Timerだとそのアプリ内プロセスのみで動いていたのがalarmmanager使うことで感覚的にはシステム側から要求するのでアプリ停止しても実行できているということでしょうか。
理由の詳細は突き詰められておりませんが、数日alarmmanagerでテストしておりますが停止することはないようです。

この件は引き続き調査中です。

コメントを投稿する

トラックバック (0)

トラックバックURL: http://kiteretsu.kayac.com/cgi-bin/mt-tb.cgi/41