0

Looper(少なくとも で作成されたものは)HandlerThread他のコードから参照されていなくても、ガベージコレクションを取得しないようです。私はquit()quitSafely()メソッドを認識していますが、私のアプリケーションでは、これらのメソッドのいずれかを呼び出す責任があるのは誰なのかわかりません。

Looper複数のアクティビティを含むアプリケーションでをシャットダウンする正しい方法と、Handlerこれで作成されたLooperがアクティビティのライフサイクルとは異なるライフサイクルを持っている場所を教えてください。onDestroy()どのアクティビティにもなりません。シャットダウンせず、プロセスがOSによって強制終了されない場合Looper、次のアプリの「起動」時に新しいものが作成される可能性があり、これがリークします。または、一度作成し、静的フィールドに保存し、決して終了せず、一度リークさせます。最後の 1 つは、これまでで最も安全で実装が簡単なようです。

4

1 に答える 1

0

複数のアクティビティを持つアプリケーションでルーパーをシャットダウンする正しい方法と、このルーパーで作成されたハンドラーのライフサイクルがアクティビティのライフサイクルと異なる場所は何ですか?

サービスを使用します。

独自のルーパー、独自のライフサイクルがあり、メイン スレッドのようなアクティビティで動作します。

LocalBroadcastManagerを使用してコールバックを取得できます。

于 2016-07-01T20:36:31.693 に答える