android 广播的使用

1.BroadcastReceive,广播,Android四大组件之一,顾名思义,只要发出了这个广播,在这个频率上就可以接受到这个广播。

2.广播主要用于消息通讯,可以用于不同的组件,不同的页面,只要一方发出一方接收,就可以得到广播,获取信息。广播类属于观察者模式,极大程度的解耦了程序,只需要在一处发出广播,另一处注册了这个广播就能接受到,并且,是一对多的形式,比如,一个页面上发出的说改变的广播,在另外3个页面上都注册了这个广播,那么另外3个页面都可以接收到信息,做出动作

3.自定义广播,首先要继承广播这个类(一下接受系统网络变化的广播)

public class NetReceiver extends BroadcastReceiver {
private ConnectivityManager connectivityManager;
private NetworkInfo info;
private Handler mHandler;
public NetReceiver(Handler handler) {
super();
this.mHandler=handler;
}


@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
// 告诉activity加载数据
MyLog.d("mark", "网络状态已经改变");
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
info = connectivityManager.getActiveNetworkInfo();
if (info != null && info.isAvailable()) {
String name = info.getTypeName();
intent.setAction("android.intent.action.NET_AVAILABLE");
intent.putExtra("NetState", "name");

mHandler.sendEmptyMessage(5);
MyLog.d("mark", "当前网络名称:" + name);

} else {
MyLog.d("mark", "没有可用网络");
}


}
}


}

然后再对应的页面中注册:

1.动态注册

receiver = new NetReceiver(mHandler);
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
// 启动广播接收器
thisterReceiver(receiver, filter);

filter.setPriority(Integer.MAX_VALUE);
this.getActivity().registerReceiver(receiver , filter);

2.静态注册

<receiver   android:name="com.xxx.xxxx"  >  
<intent-filter>  
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />  
</intent-filter>  
</receiver>  

如果是动态注册的广播,则需要在页面销毁的时候unregisterReceiver(receiver);如果是静态注册则不需要。

	

在代码中发出广播:

如果是系统的广播,就不用发广播了,要看系统的了;

如果是你自己自定义的一个action为test.zxg的广播的话,就用一下形式来发广播

Intent intent = new Intent();
intent.setAction("test.zxg");
intent.putExtra("test", "test");
sendBroadcast(intent);

其中test.zxg是你自己设置的action,这里面的action是你自己设置的,也就是自定义的广播了,不同于上面给出的例子,ConnectivityManager.CONNECTIVITY_ACTION这个是系统给出的,是不能变的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值