何か間違ったことをしているのかどうかはわかりませんが、同じようなバグに遭遇したばかりなので、別のバグである可能性もあります。これを確認したり、解決策を知ったりできるかどうか疑問に思いました。
さて、2つのアクティビティAとBを含むタブホストがあります。
Aは「最初の」タブです。だから私が次のことをすると:
- (Aが開いています)
- スイッチB
- アプリを閉じる
- プロセスを強制終了します
- アプリをもう一度開く
- (Bが表示されます)
その後、私はすべてが大丈夫です。ログを使用すると、「onRestoreInstanceState」がAとBの両方に対して呼び出されたことがわかります。
今、私は次のことをします:
- (Bが開いていますが、Aに切り替えていません)
- スイッチB
- アプリを閉じる
- プロセスを強制終了します
- アプリをもう一度開く
- (Bが表示されます)
次に、「onRestoreInstanceState」がBに対して呼び出されますが、Aに対しては呼び出されません。getは「onCreate」のnullバンドルです。
Aに切り替えてからBに戻すと、再び問題ありません。その後、上記の動作を繰り返すことができます。
これは少し紛らわしいように聞こえますが、誰かが以前にこれに遭遇したことがありますか?
よろしく、クラゲ
編集:
他のタブでもこれを繰り返しました(Aを開いたままにし、アクティビティを強制終了し、復元し、再度強制終了し、再度復元します)。次に、意図的にタブを切り替えるまで、Bの「onCreate」は呼び出されません。以前に復元されたかどうかに関係なく、常にSavedInstanceバンドルを取得します。だからすべてが大丈夫です。
Edit2:
例外として、回転の変更についても同じことが言えます。真剣にこれまで誰もこれに気づいていませんか?これは、2.2エミュレータと2.3電話の両方で機能します。