免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1391 | 回复: 0
打印 上一主题 下一主题

BroadcastReceiver的几种用法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-20 16:32 |只看该作者 |倒序浏览
BroadcastReceiver是Android中用处巨大的异步消息机制。它有轻量和跨进程的性质。一个BroadcastReceiver对象的生命周期不超过5秒,不能绑定服务和做一些耗时的操作,但是用来收发信号和消息则戳戳有余。系统也经常有BroadcastReceiver发送消息。一下为用到的一些BroadcastReceiver的一些性质,与大家分享。
1.把耗内存很多的操作,(如:下载或流量统计)注册在一个跨进程的Service里面,通过BroadcastReceiver与前台通信。

   private void sendBroad() {
      Intent it = new Intent();
      it.putExtra("netTraffic", getTotal());
      it.setAction("com.dragon.net");
      this.sendBroadcast(it);
   }

2.一些线程需要修改其他对象的属性,但是没有任何方法能确保杀死线程时、可以同通过解除注册BroadcastReceiver的方法与线程断开。
   @Override
   protected void onResume() {
      super.onResume();
      this.registerReceiver(mReceiver, new IntentFilter("org.rintail"));
   }
   
   @Override
   protected void onStop(){
      super.onStop();
      this.unregisterReceiver(mReceiver);
   }

   BroadcastReceiver mReceiver = new BroadcastReceiver() {
      @Override
      public void onReceive(Context context, Intent intent){
        long value = intent.getLongExtra("net", getCurrentValue());
        Log.d(this.getClass().getName(), "Rintail :" + value);
        changeSavedNum(value);
      }
   };

   private void changeSavedNum(long value) {
      netTraffic += value;
      if(netTraffic > getUplimit())
        this.unregisterReceiver(mReceiver);
   }

3.接收系统的消息,如开机启动消息, 短信消息,网络消息等。
      receiver android:name="SystemStartReceiver"
   android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
        intent-filter>
           action android:name="android.intent.action.BOOT_COMPLETED" />
        intent-filter>
      receiver>



消息机制一般用于跨进程的通信,但是在我们的服务里面,也可以有很好的应用,
BroadcastReceiver是service与前台通信的一种途径。加之BroadcastReceiver的生命周期比较短,把临时耗内存多的行为通过此处理,在内存回收的时候会有一定优势。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/99624/showart_2033021.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP