简述Andriod如何处理UI与耗时操作的通信,有哪些方式及各自的优缺点。

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()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值