Android 广播接收器BroadcastReceiver(二)

来源:互联网 发布:linux如何打开文件 编辑:程序博客网 时间:2024/04/28 00:19

上一节学到静态注册监听Android的系统广播,这节学习动态注册监听Android网络变化的系统广播。
1.创建监听类,用来监听广播。

public class NetWorkReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        // TODO Auto-generated method stub        Toast.makeText(context, "你的网络状态改变了", Toast.LENGTH_SHORT).show();    }}

2.在Activity中动态注册

public class MainActivity extends Activity {    private NetWorkReceiver mNetWorkReceiver;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        IntentFilter filter = new IntentFilter();        filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");        mNetWorkReceiver = new NetWorkReceiver();        registerReceiver(mNetWorkReceiver, filter);    }    @Override    protected void onDestroy() {        // TODO Auto-generated method stub        super.onDestroy();        unregisterReceiver(mNetWorkReceiver);    }}

在Activity创建的注册广播,在Activity销毁的时候注销广播。动态广播一定要记得注销,这样有利于Android资源的回收。如果你的广播只在程序前台运行时有效,可以在onResume中注册广播,在onPause中注销广播。
3.添加相应的权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

这样一个监听网络状态变化的广播监听器就做好了。发布程序到模拟器中。点击home键(不能是back键,这样会调用onDestroy函数)。然后依次点击Settings、Wireless & networks、Mobile networks、Data enabled。打印的信息就显示出来了。

项目地址:明天更新
心记不如淡墨,哈哈。

0 0