导致View刷新问题的Android Activity生命周期

时间:2012-10-16 17:07:59

标签: android multithreading android-activity

我在一个大项目中遇到了问题。我会尝试将其归结为(我希望)重要的一点。我有一个由几个Activity组成的应用程序,其中一个是其他人从中启动的主要导航点。

主要Activity被销毁并重新创建后(通过导航到另一个Activity并返回),查看更新似乎无法正常工作。具体来说,我有一个Button和几个TextView。重新创建Activity后,我无法更改其文字。我尝试更改Activity背景颜色,但这也不起作用。

我的第一个想法是我在保存/恢复过程中错过了一个重要的数据成员。但是,我已经看了很多,我认为这不是问题所在。此外,我已尝试不加载已保存的数据并重新开始,但仍然无法更新视图。

接下来,我认为我可能没有在UI线程上进行更新。我确定会导致异常,但可以肯定的是,我已将更新发布到Handler。仍然没有骰子。

但是,如果我将它们连接到onClick(),我可以看到有限的UI更改。在这种情况下,什么有效,什么不起作用引发了其他问题(某些数据已被破坏),所以现在我集中了我的调查。一旦我获得更多的映射,我将提供更新。

我还应该注意什么?

更新:添加一些代码段:

来自onCreate()

if (savedInstanceState != null) {
  Log.v(Calculations.log, "Restarting with saved instance state");
  Serializable ser = savedInstanceState.getSerializable("infusion");
  if ((ser != null) && (ser instanceof Infusion)) {
    mInfusion = (Infusion) ser;
  }
  mBeganEditing = savedInstanceState.getBoolean("editing",
    mInfusion != null);
  Log.v(Calculations.log, this.toString());
}

及其匹配onSaveInstanceState()

@Override
protected void onSaveInstanceState(Bundle outState) {
    Log.v(Calculations.log, "StageInfusion::onSaveInstanceState()");
    Log.v(Calculations.log, this.toString());
    outState.putSerializable("infusion", mInfusion);
    outState.putBoolean("editing", mBeganEditing);
    outState.putBoolean("resume", true);
    ServerManager.stopListening();

    super.onSaveInstanceState(outState);
}

我希望还有其他成员应该保存,但是他们的后果不大。

0 个答案:

没有答案
相关问题