BroadcastReceiver详解

 启动BroadcastReceiver需要两个步骤:

  1. 1.       创建需要启动的BroadcastReceiverIntent
  2. 2.       调用ContextsendBroadcast()sendorderedBroadcast()方法启动指定的BroadcastReceiver

 

  BroadcastReceiver注册广播地址,静态注册(intentFilter),动态注册(registerReceiver

 

静态注册:

 

  <receiver android:name=".MyReceiver">  

<intent-filter>

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

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

</intent-filter>

</receiver>

 

 

 

动态注册:

MyReceiver receiver = new MyReceiver();  
          
IntentFilter filter = new IntentFilter();  
filter.addAction("android.intent.action.MY_BROADCAST");  
          
registerReceiver(receiver, filter);  

 

还需要解除注册:unregisterReceiver()

 

普通广播对于多个接收者来说是完全异步的,通常每个接收者都无需等待即可以接收到广播,接收者相互之间不会有影响。对于这种广播,接收者无法终止广播,即无法阻止其他接收者的接收动作。

 

终止广播:abortBroadcast()

 

http://blog.csdn.net/liuhe688/article/details/6955668

 

 

sendOrderedBroadcast(intent, string) 发送有序广播:
 注意,使用sendOrderedBroadcast方法发送有序广播时,需要一个权限参数,如果为null则表示不要求接收者声明指定的权限,如果不为null,则表示接收者若要接收此广播,需声明指定权限。

 

 

接收系统Broadcaset,比如开机完成“android.intent.action.BOOT_COMPLETED”,“android.permission.ACCESS_NETWORK_STATE”,广播;然后构建启动服务Intent, new Intent(context, service.class); context.startService(intent); 启动Service.

 

 

ContentResolver对指定Uri执行CRUD等数据操作,但Uri并不是真正的数据核心,因此这些CRUD操作会委托给该Uri对应的ContentProvider来实现。

 

在AndroidManifest.xml中配置了provider之后,在Activity里getContentResolver()获取到resolver,再通过resolve调用query, insert, update等方法的时候,其实就是调用到了Provider执行数据操作。

posted @ 2015-10-21 15:50  岁月长衣衫薄  阅读(464)  评论(0编辑  收藏  举报