我在 Activity A 中有一段如下代码:
private static final int LOADER_ID = 0x200; protected void onCreate(Bundle b) { ... ... Loader previousLoader = getSupportLoaderManager().getLoader(LOADER_ID); ... ... }
观察1:
用户在显示 Activity A 时更改设备的方向 - previousLoader 不为 null。
观察2:
用户从 Activity A 导航到 Activity B,在查看 Activity B 时更改设备的方向并点击后退按钮 - previousLoader 为空。
我不确定为什么情况 2 中 previousLoader 为 null。使用 loader 的整个想法是避免每次在配置更改期间加载数据。 Activity A 有一组 fragment ,它们依赖于先前加载的数据来忠实地工作。由于这个问题, Activity 崩溃了。这是一个不同的问题,但我有兴趣知道为什么 getLoader 无法返回以前使用的加载器。
调用的生命周期方法的顺序符合预期:即,
OnPause、OnSaveInstanceState、OnStop、OnDestroy、OnCreate、OnStart、OnRestoreInstanceState 和 OnResume
就我而言, Activity B 是处理 ACTION_VIEW
的任何 Activity
最佳答案
这看起来像是框架中的一个尚未修复的错误。 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
我希望该问题能够在即将发布的版本之一中得到解决。
关于Android : getSupportLoaderManager(). getLoader(id) 不返回以前使用的加载程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16946807/