安卓面经_安卓基础面全解析(3/30)广播全解析

牛客高级系列专栏:

安卓(安卓系统开发也要掌握)

嵌入式

本人是2020年毕业于广东工业大学研究生:许乔丹,有国内大厂CVTE和世界500强企业安卓开发经验,该专栏整理本人对常见安卓高频开发面试题的理解;

网上安卓资料千千万,笔者将继续维护专栏,一杯奶茶价格不止提供答案解析,承诺提供专栏内容免费技术答疑,直接咨询即可。助您提高安卓面试准备效率,为您面试保驾护航!

正文开始⬇

Broadcast Receiver(广播接受者)是Android四大组件之一,自然是必备知识点。如果面试官问你:

  1. 请介绍Android里广播的分类?⭐⭐⭐⭐
  2. 程序A能否接收到程序B的广播?⭐⭐⭐
  3. 请列举广播注册的方式,并简单描述其区别?⭐⭐⭐⭐⭐

看完以下的解析,面试中一定可以让面试官眼前一亮。

目录

  • 1、Broadcast的定义

  • 2、Broadcast的注册方式

    • 2.1 静态注册
    • 2.2 动态注册
    • 2.3 静态/动态注册的区别
  • 3、Broadcast的分类

    • 3.1 普通广播
    • 3.2 系统广播
    • 3.3 有序广播
    • 3.4 本地广播
      • 3.4.1 为何更加高效安全
      • 3.4.2 如何实现本地广播
    • 3.5 粘性广播
  • 4、程序A能否接收到程序B的广播

1、Broadcast的定义

Broadcast Receiver是Android四大组件之一,是全局大喇叭,就像以前学校里面的大喇叭一样,有什么事情,就通过广播通知到全校师生。Android的广播机制是一种广泛运用的在应用程序之间传输信息的机制。主要有两大角色:广播接收者和广播发送者。因此,我们可以注册一个广播接收者,用来接收其他进程或者系统发出的广播;同样的,我们也可以通过广播发送者,向其他进程发送我们的广播,告诉其他进程需要做某个动作。

2、Broadcast的注册方式

通过了解Broadcast的注册方式,是了解BroadcastReceiver的用法是最直接有效的,有静态注册和动态注册两种方法。

2.1 静态注册

在AndroidManifest.xml清单文件里直接声明的方式叫做静态注册。

<receiver 
    //此广播接收者类是mXRReceiver
    android:name=".mXRReceiver" >
    //用于系统启动完成时,接收系统发送的广播
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

同时附上其他receiver的属性说明:

<receiver
  android:enabled=["true" | "false"]
  //此broadcastReceiver能否接收其他App的发出的广播
  //默认值是由receiver中有无intent-filter决定的:如果有intent-filter,默认值为true,否则为false
  android:exported=["true" | "false"]
  android:icon="drawable resource"
  android:label="string resource"
  //继承BroadcastReceiver子类的类名
  android:name=".mXRReceiver"
  //具有相应权限的广播发送者发送的广播才能被此BroadcastReceiver所接收;
  android:permission="string"
  //BroadcastReceiver运行所处的进程
  //默认为app的进程,可以指定独立的进程
  //注:Android四大基本组件都可以通过此属性指定自己的独立进程
  android:process="string" >

  //用于指定此广播接收器将接收的广播类型
  //本示例中给出的是用于系统启动完成时,接收系统发送的广播
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
  </intent-filter>
</receiver>

然后重新onReceive()函数。

public class mXRReceiver extends BroadcastReceiver {

  //接收到广播后自动调用该方法
  @Override
  public void onReceive(Context context, Intent intent) {
    //写入接收广播后的操作
    }
}

如上面代码,此时注册了mXRReceiver这个广播,当系统启动后,就会发送BOOT_COMPLETED的广播,符合mXRReceiver所设置的过滤条件,就会自动调用onReceive()函数,执行对应内容。

注意:onReceive()函数不能执行耗时流程。

2.2 动态注册

所谓动态注册,就是代码运行到了才注册广播。具体如下:

private void initBroadcastReceiver() {
    if (mXRBroadcastReceiver == null) {
        mXRBroadcastReceiver 

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

Android高频面试题全解析 文章被收录于专栏

#提供免费售后答疑!!花一杯奶茶的钱获得安卓面试答疑服务,稳赚不赔# Android发展已经很多年,安卓资料网上千千万,本专栏免费提供专栏内容技术答疑!!私聊当天必回。在阅读过程或者其他安卓学习过程有疑问,都非常欢迎私聊交流。

全部评论
楼主厉害,学习了
点赞 回复
分享
发布于 2022-09-20 17:15 江苏
嵌入式不好吗,怎么转app开发了
点赞 回复
分享
发布于 2022-11-13 11:25 陕西
联想
校招火热招聘中
官网直投
楼主,想问一下现在Android有什么比较火的技术吗,就是那种招聘时要求比较多的,Flutter招的人多吗?
点赞 回复
分享
发布于 2023-02-27 11:01 北京

相关推荐

2 4 评论
分享
牛客网
牛客企业服务