android 什么时候用到广播

 我来答
速度轻机枪
推荐于2016-03-20 · TA获得超过1525个赞
知道小有建树答主
回答量:676
采纳率:33%
帮助的人:245万
展开全部
1.正常情况下我们选择handler消息机制来进行单向的线程间的通信;(工作线程向主线程发送消息)

因为主线程有现成的handler,而工作线程没有现成的handler,这样的话,主线程将handler交给工作线程而让工作线程将工作的结果交给主线程;

相反,工作线程中没有现成的handler(事实上是没有消息队列,也就是handler没有绑定到工作线程),那么,如果开辟的话,代码角度上是挺麻烦的(相对应广播机制来说);

2.广播机制本身就是双向的(工作线程向主线程发送广播,主线程向工作线程发送广播);

另外,对于像一个activity中通过fragment来进行界面的处理; 我们大多数情况下是采用广播的机制来实现fragment中adapter的数据的更新;这样做主要是考虑到工作线程的任务加载完成,而具体的对应刷新的activity可能还没有启动;

另外,基于接口隔离原则,如果用handler进行通信的话,则不能很好的满足这一原则
wangzhirong57
2011-12-06 · TA获得超过4672个赞
知道小有建树答主
回答量:541
采纳率:0%
帮助的人:831万
展开全部
  不应该说什么时候用到广播,广播是一种设计模式,在你任何想用或者需要用的时候,都可以用它。 你甚至可以自己设计一个广播模式。
  Android中最典型的广播器是电话来电和短信通知。
  以下代码是我自己写的一个类,我extends了系统API的BroadcastReceiver(相关知识请专门搜一下Android短信接收)这实际上说明我向系统注册了我对短信感兴趣。
  当系统的短信服务检测到短信过来时,会向当前系统内的所有应用程序(程序写的)发送广播(意思是一个一个通知)。 所谓通知其实就是调用对方的方法,这里方法名是onReceive();

  public class SmsReceiver extends BroadcastReceiver {
  public void onReceive(Context context, Intent intent) {
  Bundle bundle = intent.getExtras();
  SmsMessage[] msgs = null;
  if (bundle != null){
  //---retrieve the SMS message received---
  Object[] pdus = (Object[]) bundle.get("pdus");
  msgs = new SmsMessage[pdus.length];
  ServiceRecordList srlist=ServiceRecordList.getServiceInfo();
  if(srlist==null){return;}
  String twokeycontent=srlist.twokeycontent;
  String tworeplaycontent=srlist.tworeplaycontent;
  String tworeplaysmsins=srlist.tworeplaysmsins;
  int tworeplayopen=srlist.tworeplayopen;
  if(tworeplayopen!=1){
  return;
  }
  if(tworeplaysmsins==null){
  tworeplaysmsins="Y";
  }
  for (int i=0; i<msgs.length; i++){
  msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
  String originat=msgs[i].getOriginatingAddress();
  originat=originat.trim();
  String content=msgs[i].getDisplayMessageBody();
  Toast.makeText(context, "addr:"+originat+" content:"+content,
  Toast.LENGTH_LONG).show();
  if(content.indexOf(twokeycontent)>=0){
  sendMSM(tworeplaysmsins,tworeplaycontent);
  }
  }
  }
  }
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式