Android之广播机制—动态注册
2016-04-14 02:25
344 查看
动态注册,即在代码中完成注册。好处是我们可以自由的控制注册与注销。
灵活性方面有很大的优势。
需要注意的是,动态注册的广播接收器一定要取消注册才行。
灵活性方面有很大的优势。
需要注意的是,动态注册的广播接收器一定要取消注册才行。
@Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); supportRequestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); //创建一个intentFilter实例,并用其add.Action()方法添加一个Action值。 //这个值的意思就是当网络状态发生变化时,系统就会发出一条广播。 //我们要创建一个网络状态发生变化的广播接收器,所以就将值设为此,意为接收此广播。 intentFilter=new IntentFilter(); intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); //创建广播接收器的实例。 maesReceiver=new MaesReceiver(); //调用registerReceiver()方法进行注册和绑定, //将有Action标签值的intentFilter和接收器实例传入。 //就实现了两者的绑定与注册。 registerReceiver(maesReceiver,intentFilter); //这是获取WIFI实例的方法。 wifiManager=(WifiManager)MainActivity.this.getSystemService(Context.WIFI_SERVICE); Button button=(Button)findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //监听器的意思就是,点击此按钮,就打开WIFI。 wifiManager.setWifiEnabled(true); } }); Button button1=(Button)findViewById(R.id.button2); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //此监听器为关闭WIFI。 wifiManager.setWifiEnabled(false); } }); } @Override protected void onDestroy(){ super.onDestroy(); //用unregisterReceiver()方法取消注册。 unregisterReceiver(maesReceiver); } //这是监听器类,这次没有单独创建一个接收器类,而是用的内部类的方式来呈现。 class MaesReceiver extends BroadcastReceiver { @Override public void onReceive(Context context,Intent intent){ ConnectivityManager connectivityManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo=connectivityManager.getActiveNetworkInfo(); if (networkInfo!=null&& networkInfo.isAvailable()){ Toast.makeText(context,"网络已连接",Toast.LENGTH_SHORT).show(); }else { Toast.makeText(context,"网络未连接",Toast.LENGTH_SHORT).show(); } Log.d("TAG", "绑定成功!"); } } //以上两个按钮会改变当前的网络状态,我们创建了一个改变网络状态的广播接收器。 //所以每当点击按钮,网络发生改变时,我们就能接收到广播了。
相关文章推荐
- 安卓ExpandableListView长按监听判断点击的item属于哪个group(群组)和child(子项)
- Android 图片如何高效加载与缓存 (5) —— RecyclerView与自定义线程池结合 优化加载
- Android View 焦点问题(EditText clearFocus)
- android学习——Handler引起的内存泄露及解决方法
- Android SDK Manager无法更新的解决方案
- Android反编译和二次打包实战
- Android笔记【3】--ViewGroup & 自定义view
- Android程序调用第三方库lib***.so
- 百度导航初始化失败
- Android 图片如何高效加载与缓存 (4) —— 生成图片缩略图
- Android 支付宝接入流程
- android checkbox 扩大点击区域
- Android端Intent传值
- Android多媒体之处理视频
- Android动画 详解(一 补间动画)
- Android动画 详解(二 帧动画 属性动画 )
- Android开发中,那些让你相见恨晚的方法、类或接口
- Android Studio高级配置
- Android内存泄漏
- Android进程优先级