Android:getSupportLoaderManager()。getLoader(id)不返回以前使用过的loader

时间:2013-06-05 18:01:14

标签: android android-loadermanager android-loader

我在活动A中有一段如下代码:

private static final int LOADER_ID = 0x200;

protected void onCreate(Bundle b) {
  ...
  ...
  Loader previousLoader = getSupportLoaderManager().getLoader(LOADER_ID);
  ...
  ...
}

观察1:

用户在显示活动A时更改设备的方向 - previousLoader不为空。

观察2:

用户从活动A导航到活动B,在查看活动B时更改设备的方向并点击后退按钮 - previousLoader为空。

我不确定为什么previousLoader在案例2中为null。使用loader的整个想法是在配置更改期间每次都避免数据加载。活动A有一组片段,它依赖于先前加载的数据来忠实地工作。由于此问题,活动正在崩溃。这是一个不同的问题,但我很想知道为什么getLoader无法返回以前使用过的加载器。

调用的生命周期方法的顺序如预期:即。,

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

在我的情况下,活动B是处理ACTION_VIEW

的任何活动

1 个答案:

答案 0 :(得分:2)

这看起来像框架中的一个尚未修复的错误。 android开发者线程对此进行了讨论:https://groups.google.com/forum/?fromgroups#!topic/android-developers/DbKL6PVyhLI

此处描述完全相同的问题:https://groups.google.com/d/msg/android-developers/DbKL6PVyhLI/OMuWhcCMWo0J

谷歌Android网站上有一个开放的票证来解决这个问题:https://code.google.com/p/android/issues/detail?id=20791

我希望在即将发布的版本中解决问题。