AndroidStudio-3.2.1(六)四大组件入门之BroadcastReceiver

本篇介绍Android四大组件之BroadcastReceiver基本知识和常用操作。

BroadcastReceiver用于应用程序内部或之间的消息广播与接收,然后在app内可以启动一个activity或serice来响应它们收到的信息。比如在自己的app内部注册一个BroadcastReceiver,用于侦听系统的一些消息,如低电量提示,短信电话提示、系统启动完毕事件等。需要注意的是BroadcastReceiver适用为传递数据量小且传递频率低的场景。

BroadcastReceiver有两种注册方式:AndroidManifest文件中的静态注册和程序动态注册。

下面通过一个示例演示:

1、添加一个BroadcastReceiver

在项目文件夹上右键选择一个BroadcastReceiver添加到项目中。与Activity一样,也会在AndroidManifest.xml中增加一个BroadcastReceiver的配置项,此为静态注册。
在这里插入图片描述
AndroidManifest中的注册项:

<receiver
            android:name=".broadcast.MyReceiver"
            android:enabled="true"
            android:exported="true"></receiver>

2、实现BroadcastReceiver中的方法

    public void onReceive(Context context, Intent intent) {
        System.out.println("MyReceiver接收到消息:" + intent.getStringExtra("msg"));
    }

3、广播消息

在activity中添加一个按钮,用于发送消息:

 Intent intent = new Intent(MyReceiver.ACTION);
                    intent.putExtra("msg", "广播消息");
                    sendBroadcast(intent);

4、动态注册与注销

  • 首先注释掉AndroidManifest中的注册项:
  • 在MyReceiver中添加一个变量:

public static final String ACTION = “com.game.cb.test02.broadcast.intent.action.MyReceiver”;

  • 在activity中定义个receiver

private MyReceiver myReceiver = new MyReceiver();

  • 调用系统方法实现注册与注销

registerReceiver(myReceiver, new IntentFilter(MyReceiver.ACTION));//注册
unregisterReceiver(myReceiver);//注销

动态注册与静态注册的区别:

动态注册:当用来注册的Activity关掉后,广播也就失效了。

静态注册:只要设备是开启状态,广播接收器也是打开着的。即便app本身未启动,该app订阅的广播在触发时也会对它起作用。

猜你喜欢

转载自blog.csdn.net/SHENCHEN1987/article/details/88580383