我一直在试图找出为什么我的应用程序的Master Activity也有一个Master Fragment似乎无法恢复任何状态,也无法恢复活动。
我查看了Big Nerd Ranch书中的示例代码,繁忙编码器的Android开发指南,大量的Android文档,谷歌搜索等等。我甚至尝试使用Android工作室中的默认Master Detail Flow来确保我所看到的是真实的。
我已经为主片段尝试了一个静态和动态片段,我已经尝试了添加到后端堆栈等的变体。
使用Android Studio Master Detail流程模板,当我点击列表元素开始详细活动时,我可以看到:
D/ItemListActivity: onSaveInstanceState:
被调用。但是,当您从详细视图返回到主列表时,将构造ItemListActivity并调用onCreate,但savedInstanceState为null。永远不会调用onRestoreInstanceState。
D/ItemListActivity: ItemListActivity()
D/ItemListActivity: onCreate: (savedInstanceState == null) = true
我看到与我自己的应用程序基本相同:
当我触摸列表元素时:
D/MainActivity: onSaveInstanceState
D/MainFragment: onSaveInstanceState
当我然后触摸返回返回主活动列表视图时,请参阅:
D/MainActivity: onDestroy:
D/MainActivity: MainActivity()
D/MainActivity: onCreate: (savedInstanceState == null) = true
D/MainFragment: MainFragment()
D/MainFragment: onCreate: savedInstanceState = null
D/MainFragment: onCreateView: savedInstanceState = null
D/MainActivity: onResume:
肯定的答案是不要将我的主要活动/片段状态存储在Dagger注入的单例中。