####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 第二版 郭霖

本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。