1.广播机制简介
- 标准广播(normal broadcasts):完全异步执行,广播发出后,所有的广播接收器都会在同一时刻接收到这条广播消息
- 有序广播 (ordered broadcasts):同步执行,同一时刻只有一个广播接收器收到,当执行完后再继续传递。优先级高的广播接收器可以先收到消息,还可以截断广播接收器。
2.接收系统广播
动态注册监听网络变化
在代码中注册称为动态注册,在AndroidManifest.xml注册称为静态注册。
1.新建一个BroadcastTest项目,然后修改MainActivity中的代码
public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private NetworkChangeReceiver networkChangeReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intentFilter = new IntentFilter();
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 connectionManager = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable()) {
Toast.makeText(context, "network is available",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "network is unavailable",
Toast.LENGTH_SHORT).