在Android中,是否可以从AsyncTask.doInBackground()
读取UI线程中存在的值(例如,Activity子类的成员字段),只是不尝试编写它们?或者只能在AsyncTask.onPostExecute()
?
答案 0 :(得分:2)
理想情况下,您不会触及doInBackground()
的{{1}}内的活动。原因是:配置改变(例如,屏幕旋转)。当线程正在进行时,活动可能会被替换,因此您最终可能会从错误的活动中读取。
如果您按照this answer over yonder中列出的方法进行操作,并且同步对AsyncTask
所持Activity
的访问权限,您将获得尽可能好的结果。当然,你还必须处理你正在阅读的任何内容的线程安全性(“例如一个Activity子类的成员字段”),因为它们可能已经或可能不是线程安全的。