Android进度条线程异常

时间:2011-09-07 11:28:39

标签: android android-asynctask

我第一次尝试使用Async对象时出现的问题。

我有一个主要活动,其中一些TextView已经以编程方式创建并添加到LinearLayout。还有一个按钮,当单击它时,实例化AsyncTask对象并在doInBackGround方法中获得结果。应该如何将结果字符串传输到TextViews?

a)通过从onPostExecute方法调用这些TextViews的SetText方法, b)在主要活动中使用意图和onActivityResult方法 c)其他一些方法(线索会很好!)

谢谢!

3 个答案:

答案 0 :(得分:1)

使用AsyncTask时,您可以使用doInBackground方法进行处理,使用onPostExecute更新任何UI更改。因此,如果您需要使用AsyncTask,我会选择选项A

答案 1 :(得分:1)

我会选择AsyncTask选项。我猜你已经有了一个,当你点击按钮时获得的结果部分需要时间,所以在doInBackground的{​​{1}}方法中设置它是一个很好的设计。

然后,您可以在AsyncTask的{​​{1}}方法中调用每个TextView的{​​{1}}方法。或者,它更合适,您可以在后台计算期间使用setText(...)onPostExecute方法(请参阅AsyncTask documentation)获取结果时更新每个视图,而不必等待直到最后。

请记住,您只能通过AsyncTaskpublishProgress(...)onProgressUpdate(...)方法拨打setText(...),因为(至少从您的解释中看起来这样)视图已在UI线程上创建,因此只能从运行这些方法的同一个线程修改它们。

答案 2 :(得分:0)

将TextViews设为私有并在doInBackground中定义它们,然后你可以在onPostExecute中调用setText方法或者在doInBackground中调用最后一个东西,但我建议使用onPostExecute。