使用AsyncTask的doInBackground()方法在主UI线程中声明的对象实例是否安全?
答案 0 :(得分:1)
这不安全,因为创建Asynctask的Activity / Fragment在完成执行时可能不存在,可能是因为屏幕旋转。您应该将所需的对象作为参数传递。要更新UI,您应该使用postExecute方法。
如果您只是线程安全,那么在Android 3.x +中如果您只使用AsyncTaks应该是线程安全的,因为AsyncTasks是在串行执行器上执行的。在Android 2.3上,它们是同时执行的。
修改强>
如果需要从AsyncTask的doInBackground方法修改UI,可以使用activity方法runOnUiThread
答案 1 :(得分:1)
您的问题更多是关于线程之间的Java线程和对象访问。
请查看此示例,以便对主题Threadining Example
有一个很好的理解答案 2 :(得分:0)
我不太明白你在主要UI线程" 中声明的"是什么意思,线程不会声明任何内容。我假设你的意思是在Activity
宣布。然后是的,只是确保你没有并发问题(例如,一个线程正在读取,而另一个正在同一个实例上写入)。 synchronized
和volatile
是您的朋友。