android---广播的简单介绍

对于android的广播机制一直不是特别清楚,今日就来聊聊他到底有啥!


1、分类

android广播接收器(BroadcastReceiver)可以分为2大类

标准广播:是完全异步执行的广播,小二理解为发散的那种,效率高,不可以拦截,没有顺序,各个广播接收器可以同时接收到。

有序广播:是一种同步执行的广播,是有先后顺寻的,直线似的,可以拦截。优先级高的就可以优先收到消息。

2、注册

android四大组件都需要注册,只有广播有两种注册方式(动态代码注册,静态在AndroidManifest.xml中注册),其他三个在AndroidManifest.xml静态注册。

3、创建广播接收器

如何创建广播接收器?

需要新建一个类,让他继承BroadcastReceiver,并且需要重写onReceive()方法。有广播到来时,onReceive()方法就会执行,具体的逻辑可以再该方法中处理。

3、例子--实现一个检测网络变化发出的广播(动态注册实例)

广播接收类

classNetworkChangeReceicerextendsBroadcastReceiver {

@Override

public voidonReceive(Context context,Intent intent) {

ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo info = manager.getActiveNetworkInfo();

if(info !=null&& info.isAvailable()) {

Toast.makeText(context,"网络可用,请继续!",Toast.LENGTH_LONG).show();

}else{

Toast.makeText(context,"网络不可用,请检查网络!",Toast.LENGTH_LONG).show();

}

}

}

接下来需要在活动onCreate()方法中,创建一个IntentFilter的实例,给他添加一个action("android.net.conn.CONNECTIVITY_CHANGE")的值,

创建广播接收器的类的实例,然后调用

registerReceiver(receicer,filter)进行注册。

这样就可以了,记得需要在onDestriy()方法中调用unregisterReceiver(receicer);来取消注册的广播。

因为动态注册的广播接收器一定都要取消才可以。

你可能感兴趣的:(android---广播的简单介绍)