私のアクティビティには、onCreate が初めて呼び出される前に初期化される多数のオブジェクトが挿入されます。アクティビティが終了メソッドを呼び出して終了すると、メインの「OS デスクトップ」ウィンドウに戻る前に onDestroy を通過します。次に、アプリケーションを再度呼び出すと、onCreate が再度呼び出されます。今回は、上で最初に終了が呼び出されたときと同じままです。したがって、RoboGuice が注入されたオブジェクトを再度インスタンス化するかどうか疑問に思っていますか? そうでない場合、これを行う方法はありますか?ありがとう。
2 に答える
これらは再インスタンス化されていないと言っていますか?
onCreate() が呼び出されたとき ex. 電話の向きを変えると、すべてのオブジェクトが再び注入されます。ただし、注入されたオブジェクトの 1 つがシングルトンの場合、オブジェクトの同じインスタンスが注入されます。「シングルトン」はアプリケーション全体の範囲で機能するため、アクティビティのライフサイクルがサインルトン オブジェクトに影響を与えることはありません。
Androidアクティビティ ライフサイクルのドキュメントをご覧ください。
onCreate が Android によって呼び出されると、アクティビティの新しいインスタンスが作成され、非シングルトン コンポーネントがインスタンス化され、すべてのコンポーネントが roboguice によって注入されます。
コンポーネントのインスタンスが 1 つだけ必要な場合は、それをシングルトンにすることができます。シングルトンはアプリケーション プロセスの間存続するため、メモリの使用には注意してください。したがって、アクティビティが破棄されてもアプリ プロセスがまだ実行されている場合でも、これらのシングルトンはメモリを消費します。
Roboguice は、guice の単なるラッパーです。クラスのインスタンスを取得するための他のオプションを追求することに興味がある場合は、Bindings、Scopes、およびProviders in Guiceを参照してください。