BroadcastReceiver详解(二)——两种注册方式

动态注册

特点:动态注册的广播的有效期与Activity或Service相同,当Activity或Service销毁后,动态注册的广播将不在存在。

注意:动态注册的广播一定要在Activity或Service内取消注册广播,如果不取消,Activity会保持引用,无法释放资源。

 

动态注册的方法

public abstract Intent registerReceiver (BroadcastReceiver receiver,IntentFilter filter)
Parameters
receiverThe BroadcastReceiver to handle the broadcast.
filterSelects the Intent broadcasts to be received.
Returns
  • The first sticky intent found that matches filter, or null if there are none.

 

public abstract Intent registerReceiver (BroadcastReceiver receiver,IntentFilter filter, String broadcastPermission, Handler scheduler)
Parameters
receiverThe BroadcastReceiver to handle the broadcast.
filterSelects the Intent broadcasts to be received.
broadcastPermissionString naming a permissions that a broadcaster must hold in order to send an Intent to you. If null, no permission is required.
schedulerHandler identifying the thread that will receive the Intent. If null, the main thread of the process will be used.
Returns
  • The first sticky intent found that matches filter, or null if there are none.

动态注册取消的方法:

public abstract void unregisterReceiver (BroadcastReceiver receiver)
Parameters
receiver

The BroadcastReceiver to unregister

 事例代码:

//onResum中注册
sdcardStateReceiver = new SdcardStateChanageReceiver();
       IntentFilter filter = new IntentFilter();
       filter.addAction(Intent.ACTION_MEDIA_REMOVED);
       filter.addAction(Intent.ACTION_MEDIA_EJECT);
       filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
       filter.addDataScheme("file");
       registerReceiver(sdcardStateReceiver, filter);

//onStop中取消注册
unregisterReceiver(sdcardStateReceiver);
   }

静态注册

特点:永久存在,即使Application已经退出,注册也会有效。

注意:android3.1以后,首次安装未启动或者用户强制force stop后,应用无法监听到

实例代码:

<receiver android:name=".receiver.BootCompleteReceiver" >
  <intent-filter android:priority="1000" >
      <action android:name="android.intent.action.BOOT_COMPLETED" />
  </intent-filter>
</receiver>

 

转载于:https://my.oschina.net/whhos/blog/686381

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值