バックグラウンドで無期限に動作し続けるサービスを実行しようとしています。終了した場合は、自動的に再起動します。しばらくは問題なく動作しますが、30 分または 40 分後に信号の送信が停止しますが、サービスは引き続きリストに表示されます。OnDestroy () に入ることはありません。
Androidが本当に停止するのか、一時停止するだけなのかはわかりません。私は長い間待っていて、二度と生命の兆候を示さないので、一時停止しないと思います. これが私のコードの一部です。理由をテストするには、通知バーに毎分メッセージを表示する無限ループを実行するだけです。
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("Timer", "Service starting" );
new Thread(new Runnable() {
public void run() {
Runit();
}
}).start();
return START_STICKY;
}
private void Runit(){
Log.i(getClass().getSimpleName(), "Timer started.");
try {
while (true){
Thread.sleep(60000);
iTimer += 1;
new Thread(new Runnable() {
public void run() {
SendNotification("Timer "+String.valueOf(iTimer));
}
}).start();
}
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
SendNotification(e1.getMessage());
}
SendNotification("Service Stop");
}
startForeground() を使用して別のテストを行ったため、停止するまで 2 日間作業が続きました。しかし、通知バーに表示したくありません。
それが機能しなくなる理由は何ですか?アンドロイドはそれを一時停止または停止しますか?