在我的应用程序被杀后恢复时加载了错误的片段

时间:2014-07-14 22:49:15

标签: android android-fragments android-lifecycle

在我的应用程序中,我有:

  • DataManager类 - 保存数据的单例
  • 在数据准备好之前显示“加载”片段的活动,然后一旦准备就绪,它将用“内容”片段替换它。 (我使用replace()方法执行此操作,因为我不再使用'loading'片段)

以下流程导致(有时)空指针异常:

  • 打开应用并等待加载数据(意味着,直到我们到达'内容'片段)
  • 使用主页按钮
  • 离开应用程序
  • 一段时间后打开应用程序(在Android杀死应用程序之后)

应用程序恢复到'content'片段会发生什么,但DataManager中的数据为空。 这是因为Android杀了我的应用程序,但是当我恢复时,它会保存状态,这意味着它会自动显示“内容”片段。

在这种情况下,有没有办法让我告诉应用不要创建'内容'片段?我目前想到的解决方案是创建一个'加载'活动而不是片段,但我想避免这种情况。

2 个答案:

答案 0 :(得分:1)

我建议的是:

  1. 将您的数据保存到磁盘(例如SQLite DB),而不是将其保留为静态数据。

  2. 在您的活动onCreate()中,检查您是否有数据。如果你这样做,继续。如果没有,请删除内容片段并添加加载片段。

答案 1 :(得分:0)

我建议在加载其他视图之前的内容片段中,检查您的数据是否准备就绪。如果没有,则启动加载片段并在准备就绪时恢复内容片段。

例如OnCreate

    if(!dataLoaded){ 
        replaceFragment(LoadingFragment)
       }