最近在学习安卓开发,看到网上有说io操作比如文件读写,蓝牙通信等需要放入单独的工作线程中,独立于activity的ui线程……是必须如此吗?还是一般建议如此?主要考虑什么因数呢?谢谢
不是必须的。写文件操作会阻塞ui线程。会导致界面不流畅。所以才推荐耗费时间的操作放在后台的工作线程中。
数据少量且快速的IO操作是可以放在UI线程的,比如说少量的文件数据读取或者是写入之类的。。
但是如果涉及到数据量较大或者速度较慢的IO操作比如网络请求或者是蓝牙通信,避免放在UI线程中,这会阻塞UI线程,严重的时候甚至会导致app直接闪退报错。。
建议这些耗时的IO操作都放入到新开辟的线程中进行。
UI线程最好只需要负责UI界面的显示更新之类的操作。
如果不独立于UI,那么一个IO操作如果耗时很长的话,界面就会一直处于等待IO完成状态,这个过程在用户看了,就是程序卡死了
Android中io操作在主线程中还是很常见的,比如sp的读写啊,从文件中读取图片啊,缓存啊之类的,并不是都是异步的,只要是不太耗时的就行,但是android中从3.0后就不允许UI线程中进行联网操作了,所以联网是必须独立了
楼上都是正解。一个打酱油路过的围观群众
io可以不在子线程,但是仅限于快速少量的文件io
要看情况,如果耗时较长就要放到线程里