android异步处理机制

昨天面试被提问android的异步处理机制有哪些,他说处理new thread还有哪种方式,我说implement runnable,他说不是,比如intentservice。

我说那还有asyncTask,loader,然后又问,为什么使用asyncTask,我说因为他有doInbackground方法啊,他问你是因为他有现成的方法可用才用的吗。我说当然了,这没毛病啊。

后来想想他可能是想让我说明白不同的异步处理机制有什么优缺点,平时没总结过,今天总结下。

平时用的异步处理有handler、handlerThread、intentservice、asyncTask、loader等。

handler主要用来在子线程中发消息通知UI线程来更新ui

handlerThread的好处就是自带looper和MessageQueue,不需要自己去创建和维护looper

intentservice继承自service,但是处理任务是在子线程,因为是service所以有不会被轻易杀死的特权,而且任务处理完以后会自动退出service,所以使用起来干净又简洁

asyncTask内部对Executor进行了封装,缺点是各版本的特性不一致,api13后稳定,默认使用串行执行,但可以用executeOnExcutor方法实现并行操作。

loader是android3.0的时候引入的一个异步数据加载框架,可以方便的在activity和fragment中异步加载数据,数据源发生变化时还能够及时发出通知。

图呢,从网上找一个

扫描二维码关注公众号,回复: 980869 查看本文章

额,asyncQueryHandler是什么?貌似还没用到过,查一下

官方解释是一个异步帮助类(A helper class to help make handling asynchronous ContentResolver queries easier.) 。这个类的主要作用就是异步对DB数据库进行操作,(这个非常重要,特别是大容量的数据处理时,例如几千联系人的数据读取,按正常的处理速度会非常的慢)。

https://www.cnblogs.com/lbangel/p/4335859.html 

搜噶,基本这些吧

猜你喜欢

转载自www.cnblogs.com/dongweiq/p/9072543.html