9

サービスの onDestroy() メソッドが呼び出されない可能性があることは承知していますが、そのようなシナリオがいつ発生する可能性があるか教えてもらえますか? Service が強制終了される可能性があるかどうかに特に関心がありますが、その VM は引き続き実行されます。

サービスの onStartCommand() メソッドに ContentObservers を登録し、onDestroy() の登録を解除するサービスがあるため、質問します。VM 全体が (VM によって作成されたオブザーバーと共に) 強制終了されたためにサービスの onDestroy() メソッドが呼び出されなかった場合、それは問題ありません。しかし、サービスが onDestroy() を呼び出さずに「立ち去る」ことができるかどうか疑問に思っていますが、サービスが作成したオブザーバーは存続し、変更を受け取り続けます。

4

2 に答える 2

11

サービスの onDestroy() メソッドが呼び出されない可能性があることは承知していますが、そのようなシナリオがいつ発生する可能性があるか教えてもらえますか?

ここに私の頭の上の3つがあります:

  • ユーザーが設定アプリから強制的に停止した場合

  • Android が急いで RAM を必要とし (電話の着信を処理するためなど)、プロセスを終了してその RAM を解放することを選択した場合

  • DDMS からプロセスを終了します

また、どこかで未処理の例外が発生してサービスがクラッシュした場合、Android はサービスが機能していないと見なし、スキップする場合がありonDestroy()ます。これは特に試していないのでわかりません。

しかし、サービスが onDestroy() を呼び出さずに「立ち去る」ことができるかどうか疑問に思っていますが、サービスが作成したオブザーバーは存続し、変更を受け取り続けます。

onDestroy()上記のハンドルされていない例外の可能性を除けば、プロセスが呼び出されない条件で終了する場合は、合理的に確信しています。

于 2013-01-03T21:57:30.270 に答える
2

また、アプリが再インストール/更新された場合、ondestroy() は呼び出されません。

于 2014-02-14T21:55:38.910 に答える