首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安全连接到UI线程Android

安全连接到UI线程Android
EN

Stack Overflow用户
提问于 2013-02-15 01:15:43
回答 3查看 163关注 0票数 1

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-15 01:18:29

我不太明白你所说的“在主UI线程中声明”是什么意思,线程不会声明任何东西。我想你的意思是在Activity上声明。那么是的,只要确保你没有并发问题(例如,一个线程在读,而另一个线程在同一个实例上写)。synchronizedvolatile是你的朋友。

票数 0
EN

Stack Overflow用户

发布于 2013-02-15 01:23:57

这是不安全的,因为创建Asynctask的活动/片段在完成执行时可能不在那里,可能是因为屏幕旋转。您应该将所需的对象作为参数传递。为了更新UI,您应该使用postExecute方法。

如果你只是指线程安全,那么在android中,如果你只使用3.x+,那么AsyncTaks应该是线程安全的,因为AsyncTasks是在串行执行器上执行的。在Android2.3上,是并发执行的。

编辑

如果需要从AsyncTask的doInBackground方法修改UI,则可以使用活动方法runOnUiThread

票数 1
EN

Stack Overflow用户

发布于 2013-02-15 01:46:13

您的问题更多地是关于Java线程和线程之间的对象访问。

请看一下这个例子,以便更好地理解主题Threadining Example

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14880369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档