您的位置:首页 > 移动开发 > Android开发

Android入门进阶教程(22)-系统广播 BroadcastReceiver详解

2013-06-04 11:47 676 查看
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代码部分:
 

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中进行配置: 

Java代码  


<receiver android:name=".SystemBroadcastRec">  

            <intent-filter>  

                <action android:name="android.intent.action.BOOT_COMPLETED" />  

  

                <category android:name="android.intent.category.LAUNCHER" />  

            </intent-filter>  

              

</receiver>  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android