####1、广播机制简介
广播分为两种:标准广播 有序广播
1)标准广播 就是发出一条消息 所有广播接受者都可以收到。
2)有序广播 就是发出一条广播 广播接收者按照优先级排序接收,并且可以在传播过程中被撤销。
####2、举个实例动态注册监听网络变化
广播接收器可以对自己感兴趣的广播进行注册,这样有广播发出时,就能够收到该广播。
注册广播有两种:动态注册,静态注册。
public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private NetworkChangeReceiver networkChangeReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intentFilter = new IntentFilter(); intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver, intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(networkChangeReceiver);
}
class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "received local broadcast", Toast.LENGTH_SHORT).show();
}
}
}
我们可以看到MainActivity 定义了一个内部类 NetworkChangeReceiver,这个类是继承BroadcastReceiver,并重写父类的onreceiver方法。每当网络发生变化时,onReceiver()方法就会得到执行。
然后观察onCreat()方法。首先我们创建了一个IntentFilter实例,并且给它添加了一个值为android.net.com.CONNECTIVITY_CHANGE 的action。添加这一个action ,是因为当网络状态发生改变时,发出的就是这个广播。
接下来创建一个NetworkChangeReceiver实例,然后调用 registerReceiver()方法进行注册,将NetworkChangeReceiver 的实例和IntentFilter的实例都传进去。这样就NetworkChangeReceiver就能收到网络变化的广播。
文献参考:
第一行代码 Android 第二版 郭霖
本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。