天天看点

关于BroadcastReceiver 监听网络状态

如何创建一个广播?首先创建一个类,让它继承BroadcastReceiver,并重写父类的onReceive()方法就行。当有广播时来时,onReceive()方法就会执行。

具体的逻辑如下代码:

@Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        //监听网络

        intentFilter = new IntentFilter();

        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");

        networkChangeReceiver = new NetworkChangeReceiver();

        registerReceiver(networkChangeReceiver, intentFilter);

   }

这上面可能有人不懂了,为什么要添加android.net.conn.CONNECTIVITY_CHANGE?

因为当网络状态发生变化时,系统发出的正是一条值为android.net.conn.CONNECTIVITY_CHANGE的广播,

也就是说我们的广播接收器想要接听什么广播,在这里添加相应的Action就行。

    @Override

    protected void onDestroy() {

        // TODO Auto-generated method stub

        super.onDestroy();

        unregisterReceiver(networkChangeReceiver);

    }

    class NetworkChangeReceiver extends BroadcastReceiver {

        @Override

        public void onReceive(Context context, Intent intent) {

            // TODO Auto-generated method stub

            Toast.makeText(context, "network change", Toast.LENGTH_SHORT)

                    .show();

        }

    }

可以看到我们定义了一个内部类NetworkChangeReceiver,这个类是继承自BriadcastReceiver的,并重写了其父类的onReceive()方法。这样每当网络状态发生变化时onReceive()方法就会得到执行,这里用了Toast提示一段信息。

继续阅读