2019-05-27

一、异步消息处理机制的实现(小白)

牵涉到四个对象:handler、message、messagequeue、looper。

                 1、handler: 字面意思,就是处理者的意思。处理有两层进行处理说:

                                1.1将message发送出去;

                                1.2将message接收并处理。

                 2、message:表示携带的信息。包含一些信息参数:包括:what字段、arg1、arg2、obj对象。

                 3、messagequeue:消息队列。

                  4、looper:循环器。


处理流程: 由handler发送一个携带信息的message消息;主线程

                    该message发送后进入messagequeue消息队列;子线程?

                    由looper控制从messagequeue队列中取出等待处理的message;子线程

                    handler对第三步取出的message进行处理。主线程?


存在问题:

第二部是否在子线程中实现?最后一步的处理是否在主线程?


二、Android封装的AsyncTask异步任务类(小白)

AsyncTask是一个抽象类,也就是说不能直接通过创建对象进行访问,只能通过继承的方式。

在进行继承的时候,需要传入的三个参数,仅仅是参数而不是类型:

    1.Params(执行任务需要传入的参数                                                                       

    2.Progerss(如果执行任务时需要显示进度)

    3.Result(执行完毕,对结果的返回)

具体参数需要根据任务的需求进行。

主要需要重写的四个方法:onPreExecute: 执行任务前执行

                                            doInBackground: (Params)子线程耗时任务

                                            onProgressUpdate: (Progress)执行UI进度更新

                                            onPostExcute: (Result)执行完毕后调用

子线程的进度参数通过publicProgress()传给主线程。

任务的开启:new AsyncTask.execute。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容