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()方法

  • 相关阅读:
    Android开发环境下关于如何导出手机通讯录数据库【Written By KillerLegend】
    Win+R快速打开你的应用程序
    public void onItemClick(AdapterView arg0, View view, int position,long arg3)详解【整理自网络】
    Adapter的getView方法详解
    LayoutInflater中四种类型inflate方法的介绍
    程序员电脑桌面,哪一张触动了你?
    o​r​a​c​l​e​ ​O​D​B​C​配​置 图形界面
    C#String与string大小写的区别
    怎么使用FlashFXP上传网站
    C#操作Excel文件
  • 原文地址:https://www.cnblogs.com/acg88688/p/9392902.html
Copyright © 2011-2022 走看看