BroadcastReceiver(广播接受者)作为Android的四大组件之一,其具有十分强大的功能,不仅可以监测系统的状态,也可通过一些操作进行传值,跳转等众多功能.
在这里简单介绍一下广播:
广播分为标准广播和有序广播, 前者(标准广播)是一种完全异步的广播,这种广播效率较高,无法被截断.后者(有序广播)顾名思义是具有一定顺序的广播,通过设置优先级,一级一级往下进行传递.此种广播因为是一步步传递,故可以在中途进行截断正在传递的广播.
下面上代码:
public class MainActivity extends AppCompatActivity {
private NetworkChangeReceiver networkChangeReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter intentFilter = new IntentFilter();
//"android.net.conn.CONNECTIVITY_CHANGE"为系统监测网络状态的action 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) {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null&&networkInfo.isAvailable()){
Toast.makeText(MainActivity.this, "网络已连接", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(MainActivity.this, "网络未连接", Toast.LENGTH_SHORT).show();
}
}
}
}
不要忘记在注册文件中加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Android的四大组件,都需要注册.
通常注册在onCreate()中
registerReceiver();//括号中有相应的参数
解除注册在onDestroy()中
unregisterReceiver();//括号中有相应的参数
同样注册广播还有静态注册,在
尖括号下注册
<application>
<receiver android:name=".XXX">
<intent-filter>
<!--name处为相应的action-->
<action android:name=""/>
</intent-filter>
</receiver>
</application>
以上为广播接受者BroadcastReceiver监测网络变化的内容.