BroadcastReceiver :广播接收器
* 除了接收用户发送的广播消息之外,还有一个重要的功能:接收系统广播。通过监听系统, 广播可以在系统特定的时刻执行某些操作;
1、广播处理机制:
* Android中的系统广播是广泛应用于应用程序之间通信的一种手段,它类似于事件处理机制,不同的地方就是广播处理的是系统级别的事件处理
过程,而一般事件是组件级别的;
* 系统广播事件的使用:这些广播是由系统自动发出的,直接定义事件接收器进行接收;
2、 Android中常见的广播Action常量:
* ACTION_TIME_CHANGED :系统时间被改变;
* ACTION_DATE_CHANGED : 系统日期被改变;
* ACTION_TIMEZONE_CHANGED :系统时区被改变;
* ACTION_BOOT_COMPLETED :系统启动完成;
* ACTION_BATTERY_CHANGED : 电池电量改变;
* ACTION_SHUTDOWN : 系统被关闭;
* Action_BATTRY_LOW : 电池电量低;
通过监听特殊的广播,可以实现应用跟随系统执行特定的操作;
3、注册receiver:
a、如何使用代码进行receiver的注册:
/* 通过代码来注册或销毁一个广播接收器 */
/* 使用Activity.onResume()方法中使用Context.registerReceiver()方法进行注册
* 可以在onPause()方法中使用Context.unregisterReceiver(r)来销毁一个广播接收器
*代码示例如下:
* */
public void codeMakeBroadcastReceiver(){
/* 实例化一个IntentFilter对象 */
IntentFilter filter = new IntentFilter();
/* 实例化广播接收器 *//* 自己编写的一个继承了BroadcastReceiver的类 */
SystemBroadcastRec s = new SystemBroadcastRec();
/* 注册receiver */
registerReceiver(s, filter);
/* 注销receiver */
unregisterReceiver(s);
}
b、 <!-- 测试:系统广播事件 注册广播接收器 -->
<receiver android:name=".SystemBroadcastRec">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</receiver>
小贴上:
1、
Android 系统中有非常多的广播,当系统启动或应用运行时便会向 Android 注册各种广播,Android 系统接收到广播后,
会判断哪种广播需要哪种事件。广播事件的筛选由Android 系统完成,在接收广播时,程序员仅需要定义广播的过滤器,
即接收什么样的广播内容。
2、
从定义来讲,广播主要分发送方和接收方,Android中的广播也是如此。Android中广播的接收方处理逻辑相对复杂一些,
首先要注册广播过滤器并继承abstract class BroadcastReceiver实现广播接收的onReceive方法。
使用案例:开机启动Action,动作实现一个提示框,失效系统广播事件处理的效果;
广播接收器java代码部分:
package com.example.broadcastreceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; import android.widget.Toast; /* 接收广播 , 该类用于测试系统广播事件 */ public class SystemBroadcastRec extends BroadcastReceiver { /* 处理系统广播事件 , 执行响应 */ public void onReceive(Context context, Intent intent) { Toast.makeText(context, "测试系统广播事件,启动时执行....", 6000).show(); } }
//在AndroidMainfest.xml中进行配置:
<receiver android:name=".SystemBroadcastRec"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </receiver>