Android Broadcast广播机制初识

Android广播机制初识

Android中的每个应用程序都可以对感兴趣的广播进行注册,这样程序就会只接收到自己关心的广播(来自系统或是其他应用程序)。同时Android允许应用程序自由发送和接收广播。总的来说,Android通过Intent发送广播,通过Broadcast Receiver接收广播。

接收系统广播

接收广播需要接收器对相应广播进行注册,在代码中动态注册或是在AndroidManifest文件内静态注册。
动态注册步骤:
创建一个MyReceiver类 继承自BroadcastReceiver 并重写onReceive方法(接收到广播后将被调用),后在正确的位置(如onCreate方法中)对创建的MyReceiver实例用registerReceiver方法注册,例registerReceiver(myReceiver, intentFilter);intentFilter是IntentFilter的一个实例,在注册前需要向intentFilter中用 addAction方法加入相应的广播 ;动态注册的接收器后必须要在 取消注册 (在onDestory方法内调用UNregisterReceive方法)
代码实例:

public class MainActivity extends AppCompatActivity {

  private IntentFilter intentFilter;
  private MyReceiver myReceiver;

  ...onCreate(Bundle savedInstanceState) {
      ...
      intentFilter = new IntentFilter();
      intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
      myReceiver = new MyReceiver();
      registerReceiver(myReceiver, intentFilter);
  }

  ...onDestroy() {
      ...
      unregisterReceiver(myReceiver);
  }

  class MyReceiver extends BroadcastReceiver {
      ...onReceive(Context context, Intent intent) {
          Toast.makeText(context, "Network change detected.", Toast.LENGTH_SHORT).show();
      }
  }

}

上述代码实例需要在AndroidManifest文件中声明网络访问权限后才可正确执行。

静态注册步骤:
在AndroidManifest对应的Receiver广播接收器receiver标签内的intent-filter标签下添加action标签并将name属性设置为希望接受的广播, 例如:

<receiver
    android:name=".MyReceiver"
  android:enabled="true"
  android:exported="true">
  <intent-filter>
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
  </intent-filter>
</receiver>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值