2011-09-19 25 views
1

我使用AsyncTask從服務器上檢索顯示在屏幕上的一些數據。問題是,如果我在數據被重新取回(顯示進度條)的同時更改設備的方向,我的UI不會更新。Android在方向更改後從AsycTask更新UI

我已經做了以下處理這種情況:

一)覆蓋onRetainNonConfigurationInstance返回我AsychTask的情況下,在onCreate方法檢索此。 b)宣佈我的小部件揮發性 C)重繪整個ü從AsycTask d的postExecute)調用的setContentView上的小窗口

我沒有得到屏幕上出現任何錯誤調用無效的方法,我的應用程序不會崩潰但UI也不更新。 我已經在調試模式下執行了代碼,更新UI的代碼實際上是執行的,但它什麼都不做。

在日誌中我看到一個錯誤,說我的Activity已經泄漏了一個窗口。

任何建議我做錯了或沒有做我應該做的事情。

+0

AsyncTask是否掛在死活動的UI對象上?聽起來像你的postExecute()代碼是在舊的活動,而不是新的... –

+1

我認爲一些代碼可以幫助... – Vic

回答

1

問題幾乎可以肯定的是,你的AsyncTask保持對舊的Activity的引用。 (也許這是一個內心階層?)這是一個令人驚訝的難題。有關Google羣組的this thread的困難以及一些解決方案的精彩討論。向下滾動以獲得Lance Nanek提供的解決此問題的一些代碼的答案。

該問題不是特定於AsyncTask;它可能發生在任何需要與UI交互的後臺線程上,並且還需要在配置更改帶來的破壞/啓動生命週期事件中倖免於難。