• 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执行数据操作。

  • 相关阅读:
    keras环境搭建
    通过程序自动设置网卡的“internet共享”选项
    编译pjsip源码
    电商开发必备,淘宝商品和类目体系是如何设计的
    pom.xml成了普通xml文件
    springboot application.properties不生效
    SpringBoot进阶教程(七十二)整合Apollo
    SpringBoot进阶教程(七十一)详解Prometheus+Grafana
    SpringBoot进阶教程(七十)SkyWalking
    Java8 lamda表达式
  • 原文地址:https://www.cnblogs.com/chenyready/p/4898032.html
Copyright © 2020-2023  润新知