Android中广播的基本介绍

1. 广播的概念

BroadcastReceiver,广播接收器,是Android四大组件之一,可用来跨进程通信的一种机制。当然,也可以用于进程内的组件间通信。

2. 广播的基本组成

2.1 广播发送器

与其他四大组件(Activity、Service)一样,也是使用Intent发送广播

  • 通过设置Action,标识该广播可被哪些接收器收到。
  • 可通过putExtra传递额外的bundle信息。
// 创建Intent
Intent intentResult = new Intent();
intentResult.setAction("my_broadcaster_action");
intentResult.putExtra(KEY_RESULT, filePath);
// 发送广播
sendBroadcast(intentResult);

2.2 广播接收器

使用BroadcastReceiver类,继承或者直接new该类的对象实例,重写方法 onReceive ,在该方法中处理收到的广播消息。

注意,该方法中不要做耗时操作,否则会ANR异常(最长10秒)。
如果非要做耗时操作,通常是启动Service,在该Service中使用子线程或者直接启动一个IntentService来执行。

 private BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            // 收到广播消息
        }
    };

3. 广播注册

创建完广播接收器后,最后还需要将其注册,这样它才能接收广播。

主要是为其配置Action,表示它能接收的广播特征,从而过滤到适合它的广播信息。

注册的方式分为静态注册动态注册

3.1 动态注册

在Activity中注册广播接收器:

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("my_broadcaster_action");
registerReceiver(mBroadcastReceiver, intentFilter);

动态注册不要忘记解除注册,一般是在Activity的onDestroy中:

@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(receiver);
}

3.2 静态注册

在Manifest文件中注册广播接收器:

<receiver android:name=".receiver.MyBroadcastReceiver">
    <intent-filter>
        <action android:name="my_broadcaster_action" />
    </intent-filter>
</receiver>

.receiver.MyBroadcastReceiver是MyBroadcastReceiver类的包名全路径的缩写,这里替换成你自己的全路径类名。比如你的包名是:com.example.broadcasttest,这里应该写 com.example.broadcasttest.MyBroadcastReceiver

本文就是对Android中的广播进行了基本的介绍,旨在让大家对广播有初步的认识。
后续我们将会详细了解静态广播与动态广播、有序广播与无序广播、本地广播与全局广播。

相关推荐

  1. Android广播基本介绍

    2024-03-22 11:22:02       41 阅读
  2. Android有序广播与无序广播

    2024-03-22 11:22:02       47 阅读
  3. Android本地广播与全局广播

    2024-03-22 11:22:02       39 阅读
  4. Android adb命令发送广播介绍

    2024-03-22 11:22:02       32 阅读
  5. AndroidZygote进程介绍

    2024-03-22 11:22:02       25 阅读
  6. Spark广播使用

    2024-03-22 11:22:02       29 阅读
  7. Pytorch广播机制

    2024-03-22 11:22:02       30 阅读
  8. android开发-12】androidListView详细用法介绍

    2024-03-22 11:22:02       45 阅读
  9. android开发-13】androidRecycleView详细用法介绍

    2024-03-22 11:22:02       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-22 11:22:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-22 11:22:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-22 11:22:02       82 阅读
  4. Python语言-面向对象

    2024-03-22 11:22:02       91 阅读

热门阅读

  1. STM32利用ADC和DMA外设读取4路电压值Oled显示

    2024-03-22 11:22:02       42 阅读
  2. js- find() 方法

    2024-03-22 11:22:02       36 阅读
  3. Mybatis之like、likeRight、likeLeft的使用

    2024-03-22 11:22:02       39 阅读
  4. 记录 Selenium 常用功能和API

    2024-03-22 11:22:02       37 阅读
  5. vue-pdf 预览pdf (数据流)

    2024-03-22 11:22:02       37 阅读
  6. 使用python和perl语言实现xlsx转化为csv

    2024-03-22 11:22:02       47 阅读
  7. Ubuntu20.04配置

    2024-03-22 11:22:02       42 阅读
  8. Elastic-Job 分布式任务调度

    2024-03-22 11:22:02       45 阅读
  9. Redis中的事务机制

    2024-03-22 11:22:02       41 阅读
  10. 脏牛提权漏洞

    2024-03-22 11:22:02       45 阅读