码迷,mamicode.com
首页 > 其他好文 > 详细

BroadcastReceiver广播接收器基础

时间:2015-11-18 23:07:27      阅读:351      评论:0      收藏:0      [点我收藏+]

标签:

BroadcastReceiver 广播接收器

 

广播接收器,主要是用于app注册一些指定事件的广播接收器,系统在这些事件被触发的时候,会通知到注册的广播接收器,然后广播接收器在onReceive函数中对接收到的通知进行处理;
广播接收器的两种注册方式:
静态注册:
<receiver android:name=".SMSBroadcastReceiver" >
  <intent-filter>
    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
  </intent-filter>
</receiver >

 

动态注册:
IntentFilter intentFilter=new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(mSmsBroadcastReceiver ,intentFilter);

 

//解注册
unregisterReceiver(receiver);

 

BroadcastReceiver的生命周期
创建 BroadcastReceiver对象 -> onReceive -> 对象调用结束;

 

Broadcast的onReceive一般调用最长时间为10秒(也有可能更短),如果超过10秒,就很有可能被系统给结束掉;所以一些耗时的任务,我们需要发给Service来进行处理;
(当初写的一个简单的短信自动回复的app,在onReceive里面创建了一个线程,并且将处理回复的任务交给这个线程处理,后来发现经常没有回复短信,到后来才知道BroadcastReceiver有这个限制)

 

其他广播接收
广播接收器另外的注册方法:

 

private void registerScreenActionReceiver(){
  final IntentFilter filter = new IntentFilter();
  filter.addAction(Intent.ACTION_SCREEN_OFF);
  filter.addAction(Intent.ACTION_SCREEN_ON);
  registerReceiver(receiver, filter);
}

 

private BroadcastReceiver receiver = new BroadcastReceiver(){
  @Override
  public void onReceive(final Context context, final Intent intent) {
    // Do your action here

 

  }
}

 


通过一个IntentFilter,将对应的Action加进去,然后进行注册;上面是注册屏幕锁定和解锁的广播接收器注册;receiver 是一个 Broadcast的匿名类实现;

 

开关机事件Action,可以在Manifest.xml里面,增加该Action对应的广播接收器配置
<action android:name="android.intent.action.BOOT_COMPLETED" /> 开机启动完毕
<action android:name="android.intent.action.ACTION_SHUTDOWN" /> 关机
android.intent.action.BATTERY_CHANGED 电量变化(电量变化可以在registerReceiver时候,返回的Intent中获取电量信息)
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 网络状态变化

 


需要权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.BATTERY_STATS"/>

 

还有其他的广播接收器使用,需要在以后的学习中慢慢整理出来;

 

BroadcastReceiver广播接收器基础

标签:

原文地址:http://www.cnblogs.com/coldforce/p/4976046.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!