Android基础--------广播
来源:互联网 发布:java 线程中断机制 编辑:程序博客网 时间:2024/06/15 10:05
Broadcast Receiver
广播算是比较特殊的一个组件
它在使用的时候有两种注册模式 一种是静态注册 一种是动态注册
静态注册就是在清单文件中注册
这种注册方法有些频繁使用的广播是不支持静态注册的 因为每次都要便利清单文件 同时 广播的触发条件又较为频繁(如屏幕是否关闭等)
这种注册的广播持续时间长(全程有效)
动态注册是在代码中注册广播 需要注意的是动态注册的广播需要反注册掉 否则会内存泄漏 (某些特殊的广播监听 如待机之类的发生比较频繁的事件不支持静态注册 ----频繁遍历所有清单文件)
广播分为两种 一种是有序广播(可以拦截) 一种是无序广播 不能拦截
广播在创建的时候也是需要继承 基类 BroadcastReceiver
或者 直接new一个BroadcastReceiver 重写其中的onReceive()方法
在注册广播的时候需要给广播添加一个action 通过IntentFilter可以给广播添加一个Action 如果是静态注册直接写在清单文件即可
代码注册的示例:
IntentFilter filter = new IntentFilter();
filter.addAction(REFLUSH);
registerReceiver(receiver, filter);
清单文件注册示例 (极光推送的广播注册)
<receiver
android:name="cn.jpush.android.service.PushReceiver"
android:enabled="true"
android:exported="false" >
<intent-filter android:priority="1000" >
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <!-- Required 显示通知栏 -->
<category android:name="cn.bizfocus.expense" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
<!-- Optional -->
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
正常使用时通过onReceive() 方法中的intent.getAction 来判断是哪一个是否是自己的广播
然后 写入逻辑代码
动态注册和静态注册的优缺点:
动态注册广播可以灵活地控制广播的开启和关闭十分灵活 但是动态注册的广播只有在程序原型后广播被注册后才能接收到广播
静态注册的广播 不是必须在程序启动后才可以接收广播
广播算是比较特殊的一个组件
它在使用的时候有两种注册模式 一种是静态注册 一种是动态注册
静态注册就是在清单文件中注册
这种注册方法有些频繁使用的广播是不支持静态注册的 因为每次都要便利清单文件 同时 广播的触发条件又较为频繁(如屏幕是否关闭等)
这种注册的广播持续时间长(全程有效)
动态注册是在代码中注册广播 需要注意的是动态注册的广播需要反注册掉 否则会内存泄漏 (某些特殊的广播监听 如待机之类的发生比较频繁的事件不支持静态注册 ----频繁遍历所有清单文件)
广播分为两种 一种是有序广播(可以拦截) 一种是无序广播 不能拦截
广播在创建的时候也是需要继承 基类 BroadcastReceiver
或者 直接new一个BroadcastReceiver 重写其中的onReceive()方法
在注册广播的时候需要给广播添加一个action 通过IntentFilter可以给广播添加一个Action 如果是静态注册直接写在清单文件即可
代码注册的示例:
IntentFilter filter = new IntentFilter();
filter.addAction(REFLUSH);
registerReceiver(receiver, filter);
清单文件注册示例 (极光推送的广播注册)
<receiver
android:name="cn.jpush.android.service.PushReceiver"
android:enabled="true"
android:exported="false" >
<intent-filter android:priority="1000" >
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <!-- Required 显示通知栏 -->
<category android:name="cn.bizfocus.expense" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
<!-- Optional -->
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
正常使用时通过onReceive() 方法中的intent.getAction 来判断是哪一个是否是自己的广播
然后 写入逻辑代码
动态注册和静态注册的优缺点:
动态注册广播可以灵活地控制广播的开启和关闭十分灵活 但是动态注册的广播只有在程序原型后广播被注册后才能接收到广播
静态注册的广播 不是必须在程序启动后才可以接收广播
0 0
- android基础-广播
- Android基础之广播
- Android广播机制基础
- Android基础--广播BroadcastReceiver
- Android基础--------广播
- Android广播基础_广播一
- android基础--广播接收者-BroadcastReceiver
- Android 基础之广播总结
- android基础学习之广播
- android基础——广播
- Android基础_广播(八)
- Android 自定义广播实例以及系统广播(基础)
- Android基础-broadcastreceiver(广播接收器)
- Android学习篇章27-Broadcast广播基础
- Android广播基础了解(非有序)
- Android基础笔记(九)- 广播
- Android基础笔记(九)- 广播
- Android基础_浅谈广播机制
- Android学习规划指南
- [图像] 二值图像的位置、朝向与投影
- HDU3681 Prison Break(DP)
- python 进阶
- jquery实现锚点跳转
- Android基础--------广播
- Linux启动提示Kernel panic - not syncing: Attempted to kill init解决办法
- Mybatis-generator工具的使用
- SQL不同服务器数据库之间的数据操作整理(完整版)
- Spring Boot教程 - 2. Spring Boot提供的特性
- 关于服务被挖矿程序minerd入侵解决方法
- Adroid中Toast自定义显示时间
- mysql sql语句执行顺序
- 关于最小二乘法