BroadcastReceivers
複数に応答する(マニフェストではなくコードで作成された)長期実行サービスがあります。ほとんどの場合、サービスは正常に実行されていますが、ときどきサービスが停止します(動作がBroadcastReceivers
停止します)-システムが何らかの理由でサービスを一時停止していると思います(デバイスで実行中のプロセスを調べると、サービスがはっきりとわかりますまだ「実行中」です)。
サービスが一時停止されている正しい理由はわかりませんが、このような場合にonDestroy()
メソッドが呼び出されるのか、それとも何らかの方法でこれを処理する機会があるのかを知りたいのですが。
onDestroy()
サービスは[実行中のプロセス]タブにまだ表示されているため、呼び出されていないと思います。また、サービスにフラグを返してもらうSTART_STICKY
ので、メモリ上の理由で強制終了されるたびにシステムがフラグを再起動する必要があります。また、なんらかの形で「一時停止」した場合WakeLock
、これが発生しないようにすることはできますか?
最善の解決策は、すべてをマニフェストに入れて、それらのメソッドBroadcastReceivers
から呼び出されるワンショットサービスを作成することであることを知っています。onReceive()
ただし、初期化段階は非常に集中的であるため、長期実行サービスの方法を選択しました。すべてを一度だけ初期化する方がよいためです。