在方向更改后,Android从AsyncTask更新UI

时间:2011-09-19 14:40:03

标签: android android-layout android-widget

我正在使用AsyncTask从服务器中检索显示在屏幕上的一些数据。问题是如果我在撤消数据时更改设备的方向(显示进度条),我的UI不会更新。

我已经完成了以下处理这种情况:

a)覆盖onRetainNonConfigurationInstance,它返回我的AsychTask的实例,在onCreate方法上检索它。 b)声明我的小部件是不稳定的 c)通过从AsycTask的postExecute调用setContentView重绘整个U. d)在小部件上调用invalidate方法

我在屏幕上没有出现任何错误,我的应用程序没有崩溃,但UI也没有更新。 我已经在调试模式下执行了代码,实际执行了更新UI的代码,但它什么也没做。

在日志中,我看到一条错误,说我的活动已经泄漏了一个窗口。

任何建议我做错了什么或不做我应该做的事情。

1 个答案:

答案 0 :(得分:1)

问题几乎可以肯定是AsyncTask保留了对旧Activity的引用。 (也许这是一个内部阶级?)这是一个令人惊讶的难题。在Google小组的this thread上,对这些问题以及一些解决方案进行了很好的讨论。向下滚动查看Lance Nanek的答案,找出解决此问题的一些代码。

问题并非特定于AsyncTask;它可能发生在需要与UI交互的任何后台线程中,并且还需要在配置更改带来的destroy / start生命周期事件中继续存在。