zoukankan      html  css  js  c++  java
  • 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执行数据操作。

  • 相关阅读:
    互斥锁和条件变量实现生产者消费者问题
    信号量实现生产者消费者问题
    IPC进程间通信---共享内存
    IPC进程间通信---消息队列
    图的遍历---广度优先遍历和深度优先遍历
    图的两种存储方式---邻接矩阵和邻接表
    内存分配---FF、BF、WF三种算法
    C++的前置++、后置++和前置--、后置--
    IPC进程间通信---信号量
    Linux进程间通信---管道和有名管道
  • 原文地址:https://www.cnblogs.com/chenyready/p/4898032.html
Copyright © 2011-2022 走看看