安全地连接到UI线程Android

时间:2013-02-14 17:15:43

标签: java android thread-safety

使用AsyncTask的doInBackground()方法在主UI线程中声明的对象实例是否安全?

3 个答案:

答案 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宣布。然后是的,只是确保你没有并发问题(例如,一个线程正在读取,而另一个正在同一个实例上写入)。 synchronizedvolatile是您的朋友。