现在的位置: 首页 > 移动开发 > 正文

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

2019年09月08日 移动开发 ⁄ 共 2409字 ⁄ 字号 评论关闭

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代码  收藏代码
  1. package com.example.broadcastreceiver;  
  2.   
  3. import android.content.BroadcastReceiver;  
  4. import android.content.Context;  
  5. import android.content.Intent;  
  6. import android.util.Log;  
  7. import android.widget.Toast;  
  8.   
  9. /*  接收广播  , 该类用于测试系统广播事件  */  
  10. public class SystemBroadcastRec extends BroadcastReceiver {  
  11.   
  12.     /* 处理系统广播事件 , 执行响应 */  
  13.     public void onReceive(Context context, Intent intent) {  
  14.           
  15.         Toast.makeText(context, "测试系统广播事件,启动时执行...."6000).show();  
  16.     }  
  17.   
  18. }  



//在AndroidMainfest.xml中进行配置: 

Java代码  收藏代码
  1. <receiver android:name=".SystemBroadcastRec">  
  2.             <intent-filter>  
  3.                 <action android:name="android.intent.action.BOOT_COMPLETED" />  
  4.   
  5.                 <category android:name="android.intent.category.LAUNCHER" />  
  6.             </intent-filter>  
  7.               
  8. </receiver>  


抱歉!评论已关闭.