えっ、よくあなたはこの問題解決するには、Androidでのソリューションに組み込まれた2持っている:オブジェクトがシリアライズされたり、onSaveInstanceState()をオーバーライドしてのonCreateで値を読み出すことができるparcelable場合
1)。詳細はgoogle developer docsです。
2)オブジェクトがシリアライズ可能でない場合は、代わりにonRetainNonConfigurationInstance()をオーバーライドしてそのオブジェクトを返すことができます。その後、オブジェクトをonCreateに戻すことができます。この方法を使用する方法についてはSO postを見てください(あなたの活動を維持しないでください!オブジェクトを永続させてください)。これの欠点は、一度に1つのオブジェクトしか永続化できないことです。
私は、これらの2つのアプローチの詳細を書き留めています。また、第3の宣言的アプローチは、ロールバックすることができます。 onRetainNonConfigurationInstanceに依存し、アノテーションを使用して、アクティビティ内のどの変数を永続化するかを宣言できます。 check it out here。つまり、シリアル化できない/継承可能なオブジェクトが複数存在しない限り、これを使用することはお勧めしません。
編集:onRetainNonConfigurationInstance()を使用して全体のアクティビティーを保持しないように注意してください。
オブジェクトをカスタム 'android.app.Application'に保存します – pskink
@pskink私は既にDagger 2の' ApplicationComponent'をそこに保存しています:)今度はDagger 2の 'MainActivityComponent'を保持する場所が必要です。 'ApplicationComponent'はApplicationContextに依存します。 'MainActivityComponent'は' SupportFragmentManager() 'に依存します。 – Alexandr
ローダの使用を検討したいですか?それらはアクティビティのライフサイクルからいくらか独立しており、状態を保持することができます –