当前位置:网站首页>四大组件之一BroadCast(其一)
四大组件之一BroadCast(其一)
2022-08-11 05:22:00 【hqhe260】
android的四大组件:
Activity、Service、BroadCast(广播)、ContentProvider
BroadCast Receiver
四大组件之一,必须在清单(androidManifest.xml)文件中进行注册
是在组件之间传播数据(Intent)的一种机制
APP哪块用到了广播?
电话
短信
电量
WIFI是否连接
广播具有以下特性:
1.广播接收者的生命周期是非常短暂的,在接收到广播的时候创建,onReceive()方法结束之后销毁
2.广播接收者中不要做一些耗时的工作,否则会弹出Application No Response错误对话框
3.最好也不要在广播接收者中创建子线程做耗时的工作,因为广播接收者被销毁后进程就成为了空进程,很容易被系统杀掉
4.耗时的较长的工作最好放在服务中完成
Android中出现的第一个错误?
在组件中进行耗时操作,就会报application no response (ANR)
广播接收者一种有几种?
标准广播
动态注册 使用java代码注册
静态注册 直接在androidManifest.xml注册
有序广播
.广播的分类
(1)按照发送的方式分类
- 标准广播
是一种异步的方式来进行传播的,广播发出去之后,所有的广播接收者几乎是同一时间收到消息的。他们之间没有先后顺序可言,而且这种广播是没法被截断的。- 有序广播
是一种同步执行的广播,在广播发出去之后,同一时刻只有一个广播接收器可以收到消息。当广播中的逻辑执行完成后,广播才会继续传播。
(2)按照注册的方式分类
- 动态注册广播
顾名思义,就是在代码中注册的。- 静态注册广播
动态注册要求程序必须在运行时才能进行,有一定的局限性,如果我们需要在程序还没启动的时候就可以接收到注册的广播,就需要静态注册了。主要是在AndroidManifest中进行注册。
实现简单的静态注册
创建广播接收者
在AndroidManifest.xml中对广播接收者进行注册
<receiver android:name=".MyReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="hopu"> </action> </intent-filter> </receiver>
发送广播
Intent intent=new Intent(); intent.setPackage(getPackageName()); intent.setAction("hopu"); intent.putExtra("info","你好啊你好啊"); sendBroadcast(intent);
实现简单的动态注册
btn_senddymnic=findViewById(R.id.btn_senddymnic); btn_senddymnic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(); intent.setAction("hopu999"); intent.putExtra("info","动态是发送到发"); sendBroadcast(intent); } });
myDymnicReceiver=new MyDymnicReceiver(); IntentFilter intentFilter=new IntentFilter(); intentFilter.addAction("hopu999"); registerReceiver(myDymnicReceiver,intentFilter);
class MyDymnicReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Log.i("我是动态的",intent.getStringExtra("info")); } } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(myDymnicReceiver); }
边栏推荐
猜你喜欢
随机推荐
Nodered系列—使用mqtt写入国产数据库tDengine
海外媒体发稿,要考虑到不同的民族文化特点
使用Go语言开发的低代码应用引擎
RIP综合实验
OSI TCP/IP学习笔记
更新GreenDAO实体类导致的编译错误
云计算学习笔记——第三章 计算虚拟化[二]
【docker-compose】mysql安装
HUE部署
BGP联邦实验
Redis哨兵模式
如何正确使用OPcache优化系统性能
代币标准--ERC721协议源码解析
Markdown学习
let 块级作用域
docker搭建redis主从和哨兵模式集群
扩展运算符和剩余参数rest
内存泄露与内存溢出
Redis客户端管理神器RedisInsight 推荐
快照读下mvcc实现避免幻读