Android四大组件之BroadcastReceveier

14 篇文章 0 订阅

Android四大组件之BroadcastReceveier

@(Blog)[马克飞象|Markdown|Android]

什么是BroadcasetReceveier

在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件。
上面是在其他地方粘来的解释,我的理解是这就是一个事件监听器,用于监听系统发送生的一些事件,比如电量不足、网络变化等。

使用

只需要继承BroadcasetReceveier并实现onReceive即可。

public class SystemBroadcastReceiver extends BroadcastReceiver {
    private static final String TAG = "SystemBroadcastReceiver";
    @Override
    public void onReceive(Context context, Intent intent) {
        //Log.d(TAG, context.toString());
        Toast.makeText(context, "网络变化", Toast.LENGTH_SHORT).show();
    }
}

提示
如果你是在activity或service中注册的,onReceive的context就是表示你进行注册时所在的context,如果是采用静态注册的,则是android.app.ReceiverRestrictedContex

注册

  1. 静态注册
    在AndroidManifest.xml文件中加入以下代码
<receiver
    android:name=".broadcastreceiver.SystemBroadcastReceiver">
    <intent-filter>
        <!-- 监听网络变化-->
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
    </intent-filter>
</receiver>
  1. 动态注册
    动态注册的广播接收优先级高于静态注册,所有永远都先接收到广播
//注册
if (mSystemBroadcastReceiver == null) {
    mSystemBroadcastReceiver = new SystemBroadcastReceiver();
}
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mSystemBroadcastReceiver, intentFilter);

//注销
unregisterReceiver(mSystemBroadcastReceiver);

由于静态注册时对广播的注册时由系统自己判断的,所以我们就少了注销这一步,但在动态注册中,广播会跟随Activity的生命周期,在Activity结束前必须注销广播。
根据Activity的生命周期,我将注册是写在onStart,而注销是写在onStop的。当然,写在onResumeonPause也是可以的。

参考
[置顶] 两分钟彻底让你明白Android Activity生命周期(图文)!
Android入门:广播发送者与广播接收者

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值