1.Handler方式:这种方式是Android中最重要的消息传递机制,通过Handler,Looper,MessageQueue三者的协作完成消息的传递,
实现简单原理:Handler发送通过sendmessage()发送消息,及把消息插入到messagequeue中,Looper不断的通过loop()方法轮询
消息队列,如果里面有消息,就将消息取出并通过msg.targer.dispatchMessage() 去分发消息。然后Handler在UI线程中
通过handlerMessage()去处理消息
优点:使用范围广,可追踪方便调试,通信的载体是消息,而消息可以包括各
种数据类型,还可以传递对象
缺点:原理较复杂
当执行耗时操作时,新建一个线程,在这个线程中执行耗时操作,通过调用handler的sendMessage,post等方法,更新ui界面;
2.AsyncTask本质上是一个线程池,所有的异步任务都会在这个线程池中的工作线程中执行,当需要操作ui界面时,会和工作线程通过handler传递消息。
3.自己开子线程执行耗时操作,然后调用Activity的runOnUiThread()方法更新ui,这种方法需要把context对象强制转换成activity后使用
3、启用Service和broadcast广播
广播机制:通过系统广播或者自定义的广播去
实现UI线程与耗时操作线程之间的通信
优点:实现简单
缺点:不利于调试,且消息传递不够灵活,会存在安全问题
5、
post()
6
.EventBus:EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。
比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现
优点:针对一个进程,解耦
缺点:大量使用会不利于调式
3、启用Service和broadcast广播
5、
post()