Android 广播机制

目录:

1.广播机制简介

2.接收系统广播

3. 发送自定义广播

4.使用本地广播

5.广播实践 — 实现强子下线功能

6.Git 时间 — 版本控制工具(203)


1.广播机制简介

灵活:Android 每个应用都可以对自己感兴趣的广播进行注册,这样该程序就只会接收到自己所关心的广播内容,广播可能来源于系统,可能来源于其他应用。

Android 提供了一套完整的 API ,允许应用自由地发送和接收广播。

发送广播 — 借助 Intent

接收广播 — 广播接收器 (Broadcast Receiver)

广播类型

标准广播 和 有序广播

标准广播:

完全异步执行的广播,广播发出后,所有广播接收器几乎同时接受此广播消息,因此无先后顺序。

效率高,但无法被截断。

标准广播工作示意图

有序广播:

同步执行的广播,广播发出后,同一时刻只会一个广播接收器能收到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才继续传递。

所以,此时的广播接收器是有先后顺序的,优先级高的就先接收到广播消息,并且前面的广播接收器可以截断正在传递的广播,这样后面的广播接收器就无法收到广播消息了。

有序广播工作示意图

2.接收系统广播

比如  手机开机完成后会发出一条广播,电池电量变化,时间或区域的改变

注册广播的方式一般有两种,在代码中注册(动态注册) 和 在AndroidManifest.xml 中注册(静态注册

如何创建一个广播接收器?  创建一个新的类,让它继承自 Broadcast Receiver ,并重写父类的 onReceive() 方法就行了。  当有广播来时,onReceive() 方法就会得到执行,具体的逻辑就可以在这个方法中处理。

2.1 动态注册监听网络变化

(183)

动态注册  的广播接收器可以自由地控制注册与注销,在灵活性方面有很大的优势,缺点是必须要在程序启动后才能接收到广播,因为注册的逻辑是写在 onCreate() 方法中的。

2.2 静态注册实现开机启动

程序未启动就可以接收到广播。

(185)

注意点:不要在 onReceive() 方法中添加过多的逻辑或者进行任何耗时的操作,因为在广播接收器中是不允许开启线程的,当 onReceive() 方法 运行较长时间而没有结束时,程序就会报错。

因此,广播接收器更多的是扮演一种打开程序其他组件的角色,比如创建一条状态栏通知,或者启动一个服务等。

3. 发送自定义广播

标准广播 和 有序广播

3.1 发送标准广播

发生广播之前,需先定义一个广播接收器来准备接收此广播才行,新建类(MyBroadcastReceiver),当收到自定义广播时,弹出提示信息。然后在 AndroidManifest.xml 中对广播接收器进行修改。让 MyBroadcastReceiver 接收到一条值为 【com.example.yanchengwei.broadcasttest.MY_BROADCAST】 的广播,因此发广播时就需要发出这样的一条广播。在布局文件中定义一个按钮,作为发送广播的触发点。按钮的点击事件里加入了发送自定义广播的逻辑。首先构建出一个 Intent 对象,并把要发送的广播的值传入,然后调用 Context 的 sendBroadcast() 方法将广播发送出去,这样所有监听 【com.example.yanchengwei.broadcasttest.MY_BROADCAST】 这条广播的广播接收器就会收到消息。

3.2 发送有序广播

android priority  属性给广播接收器设置了优先级,优先级比较高的广播接收器就可以先接收广播

在 onReceive() 方法中调用了 abortBroadcast() 方法,就表示将这条广播截断。

4.使用本地广播

之前的广播属于 系统全局广播,即发出的广播可以被其他任何程序接收到,并且也可以接收来自其他任何应用程序的广播。因此,容易引起安全性问题。

为此,引入一套本地广播机制,使用这个机制发出的广播只能在应用程序的内部进行传递,也只接收来自本地应用发出的广播。

用法:主要使用了一个 LocalBroadcastManager. 来对广播进行管理,并提供了发送广播和注册广播接收器的方法。

本地广播是无法通过静态注册的方式来接收的。

优势:

正在发生的广播不会离开我们的程序,因此不必担心机密数据泄露。

其他程序无法将广播发送到我们程序的内部,因此不需要担心会有安全漏洞的隐患。

发送本地广播比发送系统全局广播更加高效。

5.广播实践 — 实现强子下线功能


6.Git 时间 — 版本控制工具(203)




以上


写在最后:

沉思放在晚上,现在只想说一句:音乐真的有奇妙的治愈能力

还有一个核心要点,首先你要对你自己有自信,即使学校那边不放,也不要太懊恼失去了如此好的转正机会,有失必有得,有得必有失。起码一个多月,成长了好多,明确了很多东西,正视了爱情观,嗯,不要把自己的负面情绪传达给宝宝,自己消化,给她看到一个自信满满靠谱十足的你自己!让她对你有期待,而你,也允过她,会来找她的。

嗯,她说过:你可一定要来啊。嗯,我答应腻。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容