Android 之 系统广播机制BroadcastReceiver的使用


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>



猜你喜欢

转载自sunzone.iteye.com/blog/1879526