广播(Broadcast)的发送与接收

1、静态广播

1、创建一个MyBroadcastReceiver

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"我接收到广播了",Toast.LENGTH_SHORT).show();
    }
}

MyBroadcastReceiver继承BroadcastReceiver ,重写onReceive方法用来接收广播

2、在AndroidMainfast中注册Broadcast

  <receiver android:name=".MyBroadcastReceiver"
      android:exported="true">
      <intent-filter>
          <action android:name="com.example.broadcasttest.MY_BROADCAST"/>
      </intent-filter>
  </receiver>

意思是让MyBroadcastReceiver接受一条com.example.broadcasttest.MY_BROADCAST的广播

3、发送广播

Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");
//发送默认(无序)广播
sendBroadcast(intent);
//发送有序广播
sendOrderedBroadcast(intent,null);

4、有序广播

如果发送有序广播可以在AndroidMainfast里面通过priority设置广播的优先级

  <receiver android:name=".MyBroadcastReceiver"
      android:exported="true">
      <intent-filter android:priority="100">
          <action android:name="com.example.broadcasttest.MY_BROADCAST"/>
      </intent-filter>
  </receiver>

在MyBroadcastReceiver通过abortBroadcast截断广播

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"我接收到广播了",Toast.LENGTH_SHORT).show();
        abortBroadcast();
    }
}

2、动态广播

1、创建一个MyBroadcastReceiver

    private class NetworkChangeReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
//            Toast.makeText(context,"network change",Toast.LENGTH_SHORT).show();
            ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            @SuppressLint("MissingPermission") NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

            if (networkInfo !=null && networkInfo.isAvailable()){
                Toast.makeText(context,"网络已连接",Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(context,"网络已断开",Toast.LENGTH_SHORT).show();
            }
        }
    }

MyBroadcastReceiver继承Broadcast,重写onReceive方法用来接收广播。在onReceive方法里面写了一个对网络开关做出反应的代码

2、在onCreate方法里面注册广播

	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_broadcast);

        intentFilter = new IntentFilter();
        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        networkChangeReceiver = new NetworkChangeReceiver();
        registerReceiver(networkChangeReceiver,intentFilter);

    }

3、在onDestroy方法里面销毁广播

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(networkChangeReceiver);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值