大家好,我是本期栏目编辑小友,现在为大家讲解Android 异步通信原理机制-- handler问题。
由于处理程序具有异步通信的特性,所以在正常的开发过程中经常使用它。根据你平时的理解和记录,写出处理者的一些信息。如果有什么你不能理解的,希望你能原谅我,纠正我。
1.handler是一个消息分发对象。
2.处理程序的作用:完成Android中的线程通信(数据的异步加载和显示,子线程中耗时的操作,子线程加载后通知UI线程显示数据)。
3.3之间的区别。异步任务和处理程序:
相似性:完成线程通信,实现数据异步加载。
区别:AsyncTask已经打包了通信中涉及的所有步骤,只需要记住打包的框架,并在框架中填写相应的代码即可。
如果线程通信是使用Handler完成的,那么涉及的所有步骤都需要自己创建。
创建程序时,将为该程序创建一个线程。在这个过程中,将创建一个主线程(用户界面线程),并运行一个消息队列。该消息队列管理应用程序中的最高级别对象(四个组件)以及由这些对象创建的窗口。
4.队列特征:先进先出。
5.如何实现沟通:
处理程序应该在主线程中创建。完成后,处理程序将与用户界面线程和用户界面线程的消息队列相关联。当消息通过处理程序在子线程中发送时,消息对象将被发送到主线程的消息队列中。当一个新的消息进入主线程的消息队列中的队列时,监控消息队列的Looper将从队列中取出新输入的消息对象,并将其传递给用户界面线程的处理程序。
6 .张贴方法:
通过post方法在子线程中发送一个Runnable对象,这个对象会被添加到主线程队列的执行序列中,主线程会调用Runnable中的run方法,这实际上是在给子线程中的主线程添加一个操作。
延迟后方法:
在子线程中,主线程发送一条消息,被主线程接收后会延迟。
PostAtTIme方法:
主线程在指定的绝对时间点执行Runnable对象。
7 .发送方法。
方法向主线程发送一条空消息。
sendMessage方法可以向主线程发送int类型标记或封装的Message对象。
发送消息延迟和发送消息时间类似于两种发布方法。
8.消息
Arg1带有一个简单的整数。
Arg2带有一个简单的整数。
消息对象的用户定义编码。
对象引用类型允许消息对象携带引用类型的数据(字符串)。
创建消息对象时,建议使用Message . acquire()方法,而不是直接创建新对象。
9.尺蠖
功能:监控消息队列,当发现消息队列中有新消息时,取出新消息,传递给关联的Handler。
标签:
版权声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢您的支持与理解。