在Android中,是否可以从AsyncTask.doInBackground()
读取UI线程中存在的值(例如,Activity子类的成员字段),而不是尝试编写它们?还是应该只在AsyncTask.onPostExecute()
中阅读?
最佳答案
理想情况下,您不要触摸doInBackground()
中AsyncTask
内的活动。原因:配置更改(例如屏幕旋转)。线程忙碌时可能会替换活动,因此您可能会从错误的活动中读取内容。
如果遵循我在this answer over yonder中概述的食谱,并且同步对Activity
所保存的AsyncTask
的访问,则将获得尽可能好的结果。当然,无论您正在读取什么内容,您都将不得不处理线程安全性(例如“ Activity子类的成员字段”),因为它们可能已经或可能不是线程安全的。