2 qq 31488543 qq_31488543 于 2016.03.10 21:37 提问

安卓中io操作必须独立于ui线程?

最近在学习安卓开发,看到网上有说io操作比如文件读写,蓝牙通信等需要放入单独的工作线程中,独立于activity的ui线程……是必须如此吗?还是一般建议如此?主要考虑什么因数呢?谢谢

7个回答

leilba
leilba   Rxr 2016.03.10 22:21

数据少量且快速的IO操作是可以放在UI线程的,比如说少量的文件数据读取或者是写入之类的。。
但是如果涉及到数据量较大或者速度较慢的IO操作比如网络请求或者是蓝牙通信,避免放在UI线程中,这会阻塞UI线程,严重的时候甚至会导致app直接闪退报错。。
建议这些耗时的IO操作都放入到新开辟的线程中进行。
UI线程最好只需要负责UI界面的显示更新之类的操作。

zhengnan110
zhengnan110   2016.03.10 21:58

不是必须的。写文件操作会阻塞ui线程。会导致界面不流畅。所以才推荐耗费时间的操作放在后台的工作线程中。

lx624909677
lx624909677   Ds   Rxr 2016.03.10 22:42

如果不独立于UI,那么一个IO操作如果耗时很长的话,界面就会一直处于等待IO完成状态,这个过程在用户看了,就是程序卡死了

u013450131
u013450131   2016.03.10 22:52

Android中io操作在主线程中还是很常见的,比如sp的读写啊,从文件中读取图片啊,缓存啊之类的,并不是都是异步的,只要是不太耗时的就行,但是android中从3.0后就不允许UI线程中进行联网操作了,所以联网是必须独立了

u013829202
u013829202   Rxr 2016.03.11 09:30

楼上都是正解。一个打酱油路过的围观群众

dongfeng9ge
dongfeng9ge   Ds   Rxr 2016.03.11 10:28

io可以不在子线程,但是仅限于快速少量的文件io

zhouxiongfei
zhouxiongfei   2016.03.11 10:54

要看情况,如果耗时较长就要放到线程里

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!