zoukankan      html  css  js  c++  java
  • 安卓 广播机制

    广播的类型主要分为:1.标准广播    2.有序广播

    1.标准广播: 完全异步执行的广播,  发出后,所有的broadcast receiver 同时收到信息,无法被拦截            全部一起收到

    2.有序广播: 同步执行的广播,    优先级高的先收到,逻辑执行完毕   再传递给下一个,可以拦截,拦截后,后面的就接收不到了   A ->B ->C

    ****************************************************************************************************************************************************************************************

    广播的注册分为  1.动态注册  2.静态注册          广播接收器不允许开启多线程

    1.动态注册  动态注册的广播一定要取消注册

    新建一个类,让它继承自 BroadcastReceiver  并重写父类的onReceive()方法,并在onCreate()中调用registerReceiver()方法注册onDestroy()中调用unregisterReceiver()取消注册

    2.静态注册

    在AndroidManifest中的<receiver></receiver>中注册注册内容

    android:name=".BootCompleteReceiver"

    android:enabled="true"

    android:exported="true"

    <intent-filter>

    <action android:name="android.intent.action.BOOT_COMPLETED"/>    此为action值,启动后会发出android.intent.action.BOOT_COMPLETED,可改

    </intent-filter>

    然后再在此中注册权限 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

    ****************************************************************************************************************************************************************

    发送标准广播:新建一个类继承BroadcastReceiver  重写 onReceive()方法,里面写一个Toast发送内容,

    在AndroidManifest中的<receiver>中加入

    <intent-filter>

    <action android:name="aaa">

    </intent-filter>

    然后修改mainactivity文件,点击事件中加入

    Intent intent = new Intent("aaa");

    sendBroadcast(intent);

    这样,所有监听了  aaa  这条广播的接收器就会接收到消息,可以是不同的软件

    *************************************************************************************************************************************************

    发送有序广播:广播是可以跨进程的通信方式


    改动mainactivity中的sendBroadcast(),将其改为sendOrderedBroadcast(intent,null)

    两个app都注册了

    <intent-filter>

    <action android:name="aaa">

    </intent-filter>

    ,可以在intent-filter后面加上android:priority属性给广播设置优先级 ,数值越大,越先收到广播,

    在先收到广播的app中的  onReceive()方法中写入 abortBroadcast() 可截断广播的传递

    本地广播:高效,安全

    使用LocalBroadcastManager来对广播进行管理

    通过LocalBroadcastManager 的getInstance()方法得到一个实例,然后在注册广播接收器的时候调用LocalBroadcastManager的registerReceiver()方法

    在发送广播时调用LocalBroadcastManager的sendBroadcast()方法

  • 相关阅读:
    博客推荐
    2018
    2018
    学习推荐-Postgresql学习手册
    学习推荐-Redis学习手册
    odoo开发笔记 -- odoo源码解析
    前沿技术相关
    odoo开发笔记-tree列表视图拖拽排序
    odoo开发笔记-日期时间相关操作
    odoo开发笔记 -- 官方模块一览表
  • 原文地址:https://www.cnblogs.com/acg88688/p/9392902.html
Copyright © 2011-2022 走看看