26

Android Application クラスでは、 ActivityLifecycleCallbacksを登録/登録解除できます。これにより、アプリケーションのアクティビティ ライフサイクル イベントをすべて 1 か所で監視できます (必要な場合)。

unregisterActivityLifecycleCallbacksを呼び出す適切な場所はどこですか? 私はonCreateに登録しており、メソッドの名前から onTerminate が適切な場所になると考えていましたが、ドキュメントはonTerminate()について述べています:

このメソッドは、エミュレートされたプロセス環境で使用するためのものです。プロセスを強制終了するだけでプロセスが削除される本番用の Android デバイスでは呼び出されることはありません。その際、ユーザー コード (このコールバックを含む) は実行されません。

「シャットダウン」タイプのコールバックが行われる Application クラスには、他のメソッドはありません。登録を解除する必要さえありますか?

4

1 に答える 1

30

サイモンはこれについて正しかった。registerActivityLifecycleCallbacksへの対応する呼び出しは必要ありませんunregisterActivityLifecycleCallbacksthis SO questionで説明されているように、アプリケーションがいつ強制終了されたかを検出できません。したがって、コールバックの登録を解除する「論理的な」場所はありません。あったとしても、最後のアクションが実行された後Applicationにインスタンスが強制終了され、コールバックへの参照を保持するリストが強制終了されます。ActivityApplicationmActivityLifecycleCallbacks

TL;DR - の呼び出しについて心配する必要はありません。これは、の通常のライフサイクル中にアクションのunregisterActivityLifecycleCallbacks追跡を停止したい場合にのみ存在します。ActivityApplication

于 2014-04-25T17:16:20.407 に答える