当前位置: 首页 > 面试经验 >

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

优质
小牛编辑
102浏览
2023-03-28

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





系列专栏:




  • 安卓系统Framework面经专栏链接:Android系统面试题解析大全

  • 安卓系统Framework面经目录详情:Android系统面经_Framework开发面经_150道面试题答案解析





  • 安卓高频面经解析大全专栏链接:Android面试题解析大全

  • 安卓高频面经解析大全目录详情:安卓面经_Android面经_150道安卓基础面试题目录





  • 嵌入式面经解析大全专栏链接:嵌入式面经_C++软件开发面经_111道面试题全解析

  • 嵌入式面经解析大全目录详情:111道嵌入式面经题全解析软件开发面经C++面经目录




本人是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 = new BroadcastReceiver() {

public void onR


 类似资料: