有序广播案例

安卓广播机制讲解(标准广播有序广播) 安卓广播机制讲解 广播分为标准广播有序广播 标准广播(Normal broadcasts)是一种完全异步执行的广播,在广播发出之后,所有的广播收器几乎都会在同一时刻收到这条广播消息,因此它们之间没有任何后顺序可言。这种广播的效率会比较高,但同时也意味着它是无法被截断的。标准广播的工作流程如图所示。 有序广播(Ordered broadcasts )则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播收器能够收到这条广播消息,当这个广播收器中的逻辑执行完毕后,广播才会继续传递。所以此时 阅读详情

有序广播是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接受到这条信息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。所以,此时的广播接收器是有先后顺序的,并且可以被拦截。
布局文件:activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@drawable/stitch_one"
    tools:context="cn.edu.bzu.orderedbroadcast.MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="80dp"
        android:onClick="send"
        android:text="发送有序广播"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:background="#FBFBFF"
        android:textSize="20sp"/>
</RelativeLayout>

用户界面交互代码:MainActivity.Java

package cn.edu.bzu.orderedbroadcast;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void send(View view){
        Intent intent=new Intent();
        intent.setAction("Intercept_Stitch");
        sendOrderedBroadcast(intent,null);
    }
}

广播接收MyBroadcastReceiverOne.java,MyBroadcastReceiverTwo,MyBroadcastReceiverThree

package cn.edu.bzu.orderedbroadcast;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MyBroadcastReceiverOne extends BroadcastReceiver {
    public MyBroadcastReceiverOne() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyBroadcastReceiverOne","自定义的广播接收者One,接受到了");
    }
}
package cn.edu.bzu.orderedbroadcast;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MyBroadcastReceiverTwo extends BroadcastReceiver {
    public MyBroadcastReceiverTwo() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyBroadcastReceiverOne","自定义的广播接收者Two,接受到了");
    }
}
package cn.edu.bzu.orderedbroadcast;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MyBroadcastReceiverThree extends BroadcastReceiver {
    public MyBroadcastReceiverThree() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyBroadcastReceiverOne","自定义的广播接收者Three,接受到了");
    }
}

清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="cn.edu.bzu.orderedbroadcast">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!--注册广播接收者-->
        <receiver
            android:name=".MyBroadcastReceiverOne"
            android:enabled="true"
            android:exported="true">
            <intent-filter android:priority="1000">
                <action android:name="Intercept_Stitch"></action>
            </intent-filter>
        </receiver>
        <receiver
            android:name=".MyBroadcastReceiverTwo"
            android:enabled="true"
            android:exported="true">
            <intent-filter android:priority="200">
                <action android:name="Intercept_Stitch"></action>
            </intent-filter>
        </receiver>
        <receiver
            android:name=".MyBroadcastReceiverThree"
            android:enabled="true"
            android:exported="true">
            <intent-filter android:priority="600">
                <action android:name="Intercept_Stitch"></action>
            </intent-filter>
        </receiver>
    </application>

</manifest>

实现效果
这里写图片描述
运行效果图:
这里写图片描述

有序广播详解 有序广播详解言概述有序广播注意项动态注册 有序广播静态注册 有序广播Android8.0后不支持)发送有序广播特殊的广播接收者 言 Google从Android8.0版本开始,对在清单文件中静态注册广播做了限制。 概述 类似于中央下发的红头文件,一级一级向下发送,中间如果收失败,发送就会终止。 发送过程中,可以终止。终止后,后续的接收者则无法收(有一种特殊情况)。 有序广播注意项... 阅读详情

相关推荐

Android广播机制

Android广播机制 广播机制简介 Android提供了一套完整的API,允许应用程序自由的发送和广播,发送广播借助于我们之学过的:Intent,而广播需要借助于广播收器(Broadcast Receiver) 广播的类型主要分为两种:标准广播有序广播。 标准广播:一种完全异步执行的广播,在广播发出之后,所有收器几乎在同一时刻收到这条广播消息,因此它们之间没有任何的后顺序可...

low666的博客 833

Android】大喇叭——广播

我们定义一个广播收器来收此广播@Override然后与之一样对AndroidManifest.xml文件进行修改:</</@Override});: 调用setPackage方法并传入当应用的包名,这限制了广播只在当应用内传播: 发送一个广播。这个调用会通知所有注册了相同 action 的注意:我们没有这句指令就收不到广播,是因为方法是指定将这个广播发送给那个程序,让隐式的广播转化为显式的广播。在Android8.0以后,静态注册的是无法广播的。

2301_79828182的博客 973

Android中的有序广播与无序广播

本文我们介绍Android中无序广播有序广播。 无序广播,又叫普通广播。所有的收器几乎同时收到广播,无后顺序。 有序广播,发送的广播会按优级顺序被收。同一时刻只会有一个收器收到广播,且可以对广播截断,修改。

fxjzzyo的博客 3460

有序广播与无序广播案例

1、通过一个案例来讲解有序广播与无序广播的使用。 无序广播博是完全异步的,发送广播时所有监听设广播广播受者都会收到此消息,但收的顺序不确定。 有序广播,会按受者的优收,只有一个广播受者能收消息,在此广播受者中逻辑执行完毕,才会继续传递。 案例效果图如下 activity_main.xml         xmlns:tools="http://sc

qq_37651272的博客 540

案例——有序广播

案例——有序广播 通过sendOrderedBroadcast()方法发送一条有序广播 1.编写用户交互界面: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" a

zray5433的博客 359

有序广播案例实现

有序广播的小案例 通过设置不同的优级查看广播受者的受顺序,或通过不同的注册顺序查看广播受者的受顺序 首写基本的布局文件和广播收器 布局文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andro

Prince_J的博客 899

android案例有序广播

1.首布局页面,代码如下: xml version="1.0" encoding="utf-8"?> xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_order

lzc111020的博客 615

Android--广播的类型及拦截有序广播案例

Android系统中,根据广播的执行顺序不同,可将其分为有序广播和无序广播。  1.有序广播 有序广播是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播收器能够收到这条广播消息,当这个广播收器中的逻辑执行完毕后,广播才会继续传递。此时的广播收器是有后顺序,优级高的广播收器就可以收到广播消息,并且面的广播收器还可以截断正在传递的广播,这样后面的广播收器就无法收

winnie_hu的博客 6054

广播--案例:拦截有序广播

广播案例:拦截有序广播1.广播的类型可以根据广播执行顺序的不同,分为有序广播和无序广播1)无序广播有序广播受者顺序如下图所示,上面为无序广播,下面为有序广播 2有序广播的基本知识 3)广播类型 2案例实现 1)布局文件<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=

qq_37739707的博客 2045

Android--有序广播的实例解析--案例《拦截有序广播

有序广播是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播收器能够受到这条信息,当这个广播收器中的逻辑执行完毕后,广播才会继续传递。所以,此时的广播收器是有后顺序的,并且可以被拦截。 如下是一个案例1.创建一个布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/an

lg_1996的博客 1413

拦截有序广播案例

广播类型: 在Android系统中,根据广播的执行顺序不同,可以分为有序广播和无序广播1、 无序广播是一种完全异步执行的广播,无法被拦截。 2有序广播是一种同步执行的广播,可以被拦截。

qq_37739715的博客 2210

Android中发送有序广播案例

Android系统提供了两种广播类型,一种是有序广播,一种是有序广播。 (1)无序广播是完全异步执行,发送广播时所有监听这个广播广播接收者都会收到此消息,但收的顺序不确定。 (2有序广播是按照接收者的优收,只有一个广播接收者收信息,在此广播接收者中逻辑执行完毕后,才会继续传递。 实验要求:通过sendOrderedBroadeast()发送一条有序广播

小白一只 2930

发送有序广播案例

包com.edu.bzu.broadcast; 导入android.content.BroadcastReceiver; 导入android.content.Context; import android.content.Intent; 导入android.util.Log; / ** *由dpl在2017/6/4 0004创建。 * / public class MyBroadcast

dpl12的博客 1069

广播接收者——案例:拦截有序广播

本次案例介绍的是有序广播有序广播是在广播发出之后,广播收器会按照顺序广播消息,不能同时受,相对于无序广播来说,无序广播是异步执行,效率高,但是无法拦截,有序广播虽然没有无序广播的效率高,但是可以拦截,实用效果大于无序广播。 下面是本次案例的代码: activity_main.xml: <RelativeLayout xmlns:android="http://schema

ruanjian_kj的博客 748

案例--拦截有序广播

1.创建一个名字为“拦截有序广播”的应用程序相应的布局文件(activity_main.xml)<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android

qq904069486的博客 736

android 有序广播例子,有序广播的实例解析--android案例《拦截有序广播

有序广播:使用有序广关健处在于定义接收者的优权,以下代码中有三个类广播案例《拦截有序广播1、布局文件上述布局文件,定义了一个button按钮,并且为按钮注册了一个onclick点击事件send,当用户点击该按钮时,会发送一条有序广播2、编写MainActivitypackagebzu.edu.cn.orderdbroadcast;importandroid.content.Inte...

weixin_39796533的博客 413
上一篇: 新闻客户端案例
发呆ing
博客等级 码龄10年 2粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值