文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>BroadcastReceiver的几种用法

BroadcastReceiver的几种用法

时间:2009-08-20  来源:rintail

BroadcastReceiver是Android中用处巨大的异步消息机制。它有轻量和跨进程的性质。一个BroadcastReceiver对象的生命周期不超过5秒,不能绑定服务和做一些耗时的操作,但是用来收发信号和消息则戳戳有余。系统也经常有BroadcastReceiver发送消息。一下为用到的一些BroadcastReceiver的一些性质,与大家分享。

1.把耗内存很多的操作,(如:下载或流量统计)注册在一个跨进程的Service里面,通过BroadcastReceiver与前台通信。

 <service android:name="NotiService" android:process=":remote" />

   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的生命周期比较短,把临时耗内存多的行为通过此处理,在内存回收的时候会有一定优势。

相关阅读 更多 +
排行榜 更多 +
边境检察最后区域手机版下载

边境检察最后区域手机版下载

角色扮演 下载
酋长你别跑手游下载

酋长你别跑手游下载

休闲益智 下载
心动漫画app下载官方版

心动漫画app下载官方版

浏览阅读 下载