温习Android基础知识——《第一行代码(第三版)》读书笔记 Chapter 6 广播

第六章:全局大喇叭,详解广播机制

广播类型

标准广播与有序广播

标准广播

标准广播是一种完全异步执行的广播,在广播发出之后,所有的BroadcastReceiver几乎会在同一时间收到这条广播消息,因此它们之间没有任何先后顺序可言,也就无法被截断,这种广播效率较高。

有序广播

有序广播是一种同步执行的广播,在广播发出之后,同一时间只会有一个BroadcastReceiver能够收到这条广播消息,当这个BroadcastReceiver中的逻辑执行完毕后,广播才会继续传递,所以此时的BroadcastReceiver是有先后顺序的,优先级高的BroadcastReceiver就可以先收到广播消息,并且前面的BroadcastReceiver还可以截断。

隐式广播与显式广播

隐式广播

隐式广播即没有具体指定发送给哪个应用程序的广播,大多数系统广播都属于隐式广播。

显式广播

显式广播与隐式广播相反,是具体指定了发送给哪个应用程序的广播。

注册广播

动态注册

动态注册,即在代码中注册,如下列代码:

val intentFilter = IntentFilter()
intentFilter.addAction("android.intent.action.TIME_TICK")
timeChangeReceiver = TimeChangeReceiver()
registerReceiver(timeChangeReceiver,intentFilter)

//TimeChangeReceiver类的代码
inner class TimeChangeReceiver : BroadcastReceiver(){
        override fun onReceive(context: Context?, intent: Intent?) {
            Toast.makeText(context,"时代变了",Toast.LENGTH_SHORT).show()
        }

    }

注意,动态注册的BroadcastReceiver一定要记得取消注册。

override fun onDestroy() {
    super.onDestroy()
    unregisterReceiver(timeChangeReceiver)
} 

静态注册

静态注册,即在注册文件中注册:
先创建BootCompleteReceiver,

class BootCompleteReceiver : BroadcastReceiver() {

    override fun onReceive(context: Context, intent: Intent) {
        // This method is called when the BroadcastReceiver is receiving an Intent broadcast.
        Toast.makeText(context,"开机了!!",Toast.LENGTH_SHORT).show()
    }
}

此时AS会为我们自动在注册文件中我们的BroadcastReceiver,在其中插入< intent-filter >标签,并指定要接受的广播即可。

<receiver
      android:name=".BootCompleteReceiver"
      android:enabled="true"
      android:exported="true">
      <intent-filter>
           <action android:name="android.intent.action.BOOT_COMPLETED" />
      </intent-filter>
</receiver>

对比

动态注册的BroadcastReceiver可以自由地控制注册与注销,在灵活性方面有很大优势。但由于注册的逻辑是写在onCreate()方法中的,所以它只能在程序启动之后才能接收广播。
静态注册的BroadcastReceiver不仅可以监听到动态注册的BroadcastReceiver可以监听的广播,还能监听到程序未启动情况下动态注册的BroadcastReceiver监听不到的广播。
由于大量恶意应用利用静态注册的BroadcastReceiver的这一特点监听系统广播,在Android 8.0 之后,几乎所有的隐式广播都不允许使用静态注册的方式来接收了。只有少数特殊的系统广播目前仍然允许时候静态注册的方式来接收。

注意

不要在onReceive()方法中添加过多的逻辑或者进行任何的耗时操作,因为BroadcastReceiver中是不允许开启线程的,当onReceive()方法运行了10s而没有结束时,程序就会崩溃。

发送广播

我们借助Intent来发送广播

发生标准广播

val intent = Intent("com.example.broadcasttest.MY_BROADCAST")
//这里调用setPackage方法指定这条广播是发生给哪个应用的
intent.setPackage(packageName)
sendBroadcast(intent)

发生有序广播

设置好BroadcastReceiverd优先级后,就可以发送有序广播了。

val intent = Intent("com.example.broadcasttest.MY_BROADCAST")
//这里调用setPackage方法指定这条广播是发生给哪个应用的
intent.setPackage(packageName)
sendOrderedBroadcast(intent,null)
//sendOrderedBroadcast()方法接收两个参数,
//第一个参数仍然是Intent,第二个参数是一个与权限相关的字符串,这里传入null即可

如果需要截断,可在onReceive方法中调用abortBroadcasr()方法。

### 回答1: 《现代信号处理第三版课后习题pdf》是一本辅助学习《现代信号处理》第三版的习题集。作为一本信号处理的教材,它帮助学生理解和掌握信号处理的基本理论和方法。 该习题集包含了与《现代信号处理第三版》中相应章节配套的习题,涵盖了信号的表示与处理、线性时不变系统、频域分析与滤波、采样与模数转换、多通道信号与线性滤波、时频表示与分析等方面的内容。 通过解答这些习题,学生可以巩固课堂上的知识,加深对信号处理理论的理解,并通过实际操作提高分析和解决实际问题的能力。此外,习题集还提供了答案和解析,学生可以通过对答案的核对来检验自己的学习进展,并及时纠正错误。 对于学习信号处理的学生来说,这本习题集是一个非常有价值的学习工具。它不仅帮助学生进行复习和巩固知识,而且提供了实际问题的解决思路,培养了学生的问题分析和解决问题的能力。 总之,《现代信号处理第三版课后习题pdf》是一本对课堂教学进行补充和加强的教材。通过反复练习习题,学生可以提高对信号处理理论和方法的掌握程度,为将来的实际工作打下坚实的基础。 ### 回答2: 《现代信号处理第三版》是一本经典的信号处理教材,课后习题pdf是该教材的一个附属学习资料。这个pdf文件包含了各章节的习题与解答,是供学生们进行练习和巩固所学知识的一个重要资源。 首先,在这个pdf中,我们可以找到大量与信号处理相关的习题。这些习题分布在课本中各个章节之后,贯穿了整个学习过程。通过完成这些习题,可以更好地巩固课本中所学的概念、理论和方法,并深入理解信号处理的基本原理与技术。 其次,这个习题pdf中还提供了每个习题的详细解答。学生们可以通过参考这些解答,验证自己的答案是否正确,纠正可能存在的错误,并进一步加深对习题中涉及的知识点的理解和掌握。 此外,这个习题pdf对于自学者来说也是一个很好的辅助工具。自学者可以通过习题pdf进行自我测试,自我评估自己的学习进度和掌握情况,并及时发现和填补知识上的漏洞。 总的来说,《现代信号处理第三版》课后习题pdf是一份很好的学习资源。它能够帮助学生们更好地学习信号处理知识,巩固所学内容,并提升自己的解题能力和理论水平。无论是课堂学习还是自学探索,这份习题pdf都是一份非常有价值的参考资料,对于提高信号处理水平具有重要作用。 ### 回答3: 《现代信号处理第三版》课后习题.pdf是一本与现代信号处理相关的教材,适用于对信号处理有一定基础的学生或者从事相关领域的工程师。本书的习题是由书中的知识点延伸而来,旨在加深学生对信号处理理论与应用的理解。以下是对该习题pdf的回答: 该习题pdf共包含多道选择题、简答题和计算题。选择题是对于信号处理的基础知识进行测试,考察学生对信号、系统、频谱等概念的理解。简答题则要求学生阐述信号处理的一些基本原理、方法和应用,并能结合实例进行解答,考察学生的综合能力。计算题则要求学生运用信号处理算法和公式进行计算和推导,考察学生的计算和分析能力。 对于这些习题,学生可以通过翻看课本、复习课堂笔记以及查阅相关参考资料来进行解答。在解答过程中,可以参考例题和习题的解析,以及对应章节的知识点进行温习和复习。同时,可以与同学或者老师进行讨论,互相帮助和交流,共同提高对信号处理的理解和应用能力。 通过认真解答该习题pdf,学生可以巩固信号处理的基本概念,加深对信号处理算法和方法的理解,并提高对信号处理应用的把握能力。同时,通过做题的过程,学生也能够培养自己的分析和解决问题的能力,为日后研究和应用信号处理打下坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值