可以从AsyncTask.doInBackground()读取UI线程中的值

时间:2011-04-09 21:41:13

标签: android multithreading thread-safety android-asynctask

在Android中,是否可以从AsyncTask.doInBackground()读取UI线程中存在的值(例如,Activity子类的成员字段),只是不尝试编写它们?或者只能在AsyncTask.onPostExecute()

中阅读

1 个答案:

答案 0 :(得分:2)

理想情况下,您不会触及doInBackground()的{​​{1}}内的活动。原因是:配置改变(例如,屏幕旋转)。当线程正在进行时,活动可能会被替换,因此您最终可能会从错误的活动中读取。

如果您按照this answer over yonder中列出的方法进行操作,并且同步对AsyncTask所持Activity的访问权限,您将获得尽可能好的结果。当然,你还必须处理你正在阅读的任何内容的线程安全性(“例如一个Activity子类的成员字段”),因为它们可能已经或可能不是线程安全的。