将TextView
之类的UI元素(通过AsyncTask.execute()
传递给AsyncTask.doInBackground()
并从视图中 read 字段是一种不好的做法在后台线程? (我知道不能从后台线程更改GUI元素。)
答案 0 :(得分:3)
这不是很好,原因很简单,您不知道该小部件是否有用。
假设发生以下情况:
AsyncTask
,但是它滞留在其他任务之后,无法立即运行AsyncTask
终于开始运行,您尝试访问此小部件在最佳情况下,小部件完全是错误的。在最坏的情况下,无论调用什么,都会导致某种崩溃,因为托管活动已被破坏。
AsyncTask
本身已经过时了;现代的Android开发使用了其他功能({x {1}},RxJava和Kotlin协程是最大的候选者)。但是,如果您希望使用LiveData
,请确保它不会尝试引用AsyncTask
中的活动或其窗口小部件。