Android : getSupportLoaderManager(). getLoader(id) 不返回以前使用的加载程序

标签 android android-loadermanager android-loader

我在 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/

相关文章:

android - 将 android 项目从 eclipse 迁移到 android studio 时出现 "Gradle location is incorrect"

android - EditText android :numeric ="decimal" and android:inputType ="numberDecimal"之间的区别

android - Android 中如何将资源复制到缓存?

android - 加载器将结果传送到错误的 fragment

java - android中获取POST后返回的url

android - onLoadFinished 在返回之前不会在屏幕外 fragment 上调用

android - 对 CursorLoaders 感到困惑并将它们与自定义 SQLiteOpenHelper 一起使用

android - 使用 CursorLoader 和 Custom CursorAdapter 过滤 ListView

android - Honeycomb Loader 能否解决 AsyncTask + UI 更新的问题?

java - 实例化 Loader/AsyncTask 时是否应该使用对 Context 对象的 WeakReference?