广播接收器
来源:互联网 发布:mac有office吗 编辑:程序博客网 时间:2024/04/29 03:45
四大组件之一广播接收器
小生第一次写博客,定期总结笔记,巩固知识点,希望能日积月累,厚积薄发。
什么是广播接收器?
就是系统的一些自身状态发生改变时会发出”广播”,
APP会像收音机一样接收到这些广播并作出处理。
例如:
开机自启。当手机系统开机时使会向APP发出广播:“我开机啦”,然后APP便会自动启动。
wifi自动下载功能。APP门户平台都有这样一个功能:当联网方式变为wifi时,变为自动下载,为流量时,提示下载。
一. 动态注册广播接收器
基本框架
定义私有变量
private IntentFiler intentFiler;private MyBroadcastReceiver myBroadcastReceiver;
初始化消息接收器、添加消息内容、注册接收器
intentFilter = new IntentFilter();intentFilter.addAction("消息命名");myBroadcastReceiver = new MyBroadcastReceiver();registerReceiver(myBroadcastReceiver,intentFilter);
定义广播接收类(继承广播接收器BroadcastReceiver)
class MyBroadcastReceiver extends BroadcastReceiver{public void onReceive(Context context, Intent intent) { }}
在onDestroy方法中小销毁注册
protected void onDestroy() {super.onDestroy();unregisterReceiver(myBroadcastReceiver);}
二.静态注册广播监听器
关闭程序后如果接收到广播仍能重启程序
清单文件
<receiver name=".类名"> <intent-filter android:priority="数字"> //优先级设置,数字越大优先级越高 ,标准广播可不写 <action android:name="...."/> //接收的行为消息 </intent-filter><receiver/>
新建Class继承BroadcastReceiver
public class MyBroadcastReceiver extends BroadcastReceiver{public void onReceive(Context context, Intent intent) { } }
三.发送/拦截广播
发送标准广播
Intent i = new Intent();i.setAction(".....") //设置行为消息sendBroadcast(i);
发送有序广播
//第二个参数为权限设置,可定义为nullsendOrderBroadcast(i,permision);
拦截广播
abortBroadcast();
四.使用本地广播
意旨只限本APP程序的广播发送
使用LocalBroadcastManager管理广播
private LocalBroadcastManager localBroadcastManager;localBroadcastManager = LocalBroadcastManager.getInstance(this); localBroadcastManager.sendBroadcast(i);
示例:动态监听网络变化
网络连接或断开自动出现消息提示
开启WIFI时
关闭WIFI时
代码块
监听网络变化方法类
class NetworkChangeReceiver extends BroadcastReceiver{ public void onReceive(Context arg0, Intent arg1) { ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if(networkInfo != null && networkInfo.isAvailable()){ Toast.makeText(arg0, "网络连接成功", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(arg0, "网络断开连接", Toast.LENGTH_SHORT).show(); } }}
在onCreate方法中实例化消息接收器、网络变化监听方法类并注册接收器
intentFilter = new IntentFilter();//添加行为信息intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");registerReceiver(networkChangeReceiver,intentFilter);
onDestoy方法中注销接收器
protected void onDestroy(){super.onDestroy();unregisterReceiver(networkChangeReceiver);}
添加(获取网络状态)权限
android.permission.ACCESS_NETWORK_STATE
0 0
- 广播接收器
- 广播接收器
- BroadCastReceiver android 广播接收器
- 使用广播接收器
- BroadcastReceiver 广播接收器
- BroadcastReceiver(广播接收器)
- android 广播与 接收器
- BroadcastReceiver(广播接收器 )
- BroadcastReceive广播接收器:
- @EReceiver加强广播接收器
- Android 广播接收器BroadcastReceiver
- 广播接收器动态注册
- 广播接收器的使用
- Xamarin.Android广播接收器
- broadcast receiver广播接收器
- android中的广播接收器
- 动态注册广播接收器
- 静态注册广播接收器
- Java 泛型(Generics) 综述
- Linux命令之"crontab"
- HDU 2046 递推,给2*n格子
- C#控制台基础 为自己的函数添加调用时候显示的说明
- 3.保护模式8-页式存储(启动分页机制)
- 广播接收器
- 后大学时代(晚上溜达听好妹妹乐队不说再见有感)
- Macbook系统下python入门
- VS2015使用小技巧 用VS运行写好得到代码的时候,通过双击快速关闭控制台
- Faster R-CNN在Window环境的目标检测
- 【Qt开发】【VS开发】【Linux开发】OpenCV、Qt-MinGw、Qt-msvc、VS2010、VS2015、Ubuntu Linux、ARM Linux中几个特别容易混淆的内容
- preStateDemo
- dot 语法全介绍
- Redis系列(二)-Hredis客户端设计及开源