2

たとえば Activity A に次のようなコードがあります。

private static final int LOADER_ID = 0x200;

protected void onCreate(バンドルb) {
  ...
  ...
  ローダー previousLoader = getSupportLoaderManager().getLoader(LOADER_ID);
  ...
  ...
}

観察 1 :

アクティビティ A が表示されている間に、ユーザーがデバイスの向きを変更しました - previousLoader が null ではありません。

観察 2 :

ユーザーがアクティビティ A からアクティビティ B に移動し、アクティビティ B を表示しているときにデバイスの向きを変更し、戻るボタンを押します - previousLoader は null です。

Case 2 で previousLoader が null である理由がわかりませんでした。アクティビティ A には、以前にロードされたデータに依存して忠実に動作する一連のフラグメントがあります。この問題により、アクティビティがクラッシュしています。それは別の問題ですが、getLoader が以前に使用されたローダーを返さない理由を知りたいと思っています。

呼び出されたライフサイクル メソッドの順序は、予想どおりでした。つまり、

OnPause, OnSaveInstanceState, OnStop, OnDestroy, OnCreate, OnStart, OnRestoreInstanceState and OnResume

私の場合、アクティビティ B は処理する任意のアクティビティでしたACTION_VIEW

4

1 に答える 1

2

これは、まだ修正されていないフレームワークのバグのようです。Android 開発者スレッドには、これに関する議論があります: https://groups.google.com/forum/?fromgroups#!topic/android-developers/DbKL6PVyhLI

まったく同じ問題がここで説明されています: https://groups.google.com/d/msg/android-developers/DbKL6PVyhLI/OMuWhcCMWo0J

この問題に対処するためのオープン チケットが google android サイトにあります: https://code.google.com/p/android/issues/detail?id=20791

今後のリリースで問題が解決されることを願っています。

于 2013-06-13T14:43:45.560 に答える