使用ProgressUpdate和Listener更新AsyncTask和更新UI的问题

时间:2011-06-05 06:37:57

标签: android listener android-asynctask

当我尝试从AsyncTask onProgressUpdate更新TextView(通过侦听器)时,我收到“CalledFromWrongThreadException”错误。

如果我尝试从onPostExecute更新相同的TextView,一切正常。

我一直在测试使用基于的代码 https://github.com/commonsguy/cw-android/tree/master/Service/WeatherAPI

(使用一个小的mod在doInBackgroundMethod中执行onProgressUpdate,并添加onProgressUpdate覆盖)

任何有关修复的建议都将非常感激。

2 个答案:

答案 0 :(得分:4)

您是否从代码中调用了onProgressUpdate()?你不应该这样做。使用publishProgress()方法。

答案 1 :(得分:-1)

onProgressUpdate不在UI线程上运行,因此您无法从此方法访问视图。如果您想要更新进度,您应该找到一种方法来将AsyncTask与您的活动同步。我正在使用的方法是使用onBeginonUpdateonFinish等方法创建界面。您应该在主活动类中实现此接口。然后,您应该在AsyncTask内有一个活动实例。在onProgressUpdate方法中,您只需在活动中调用onUpdate方法并更新布局。希望我已经解释清楚了。