android 51 有序广播

简介:

无序广播:一条广播发送出去,多个接收者接收没有顺序。
有序广播:广播接收者可以设置优先级,优先级高的先收到广播。
有序广播可以设置优先级。

mainActivity.java

复制代码
package com.sxt.day07_06;

import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.view.Menu;

public class MainActivity extends Activity {
    ThirdReceiver mReceiver;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        registgerReceiver();
        Intent intent=new Intent("com.sxt.day07_06.order_broadcast");
        intent.putExtra("key", "hello java");
        sendOrderedBroadcast(intent, null);//发送有序广播
    }
    //注册第三级别的广播接收者,第一第二级别的广播接收者在系统说明文件中注册,
    private void registgerReceiver() {
        mReceiver=new ThirdReceiver();
        IntentFilter filter=new IntentFilter("com.sxt.day07_06.order_broadcast");//com.sxt.day07_06.order_broadcast广播的字符串
        filter.setPriority(600);//设置优先级
        registerReceiver(mReceiver, filter);
    }
    //java定义的第三级别的广播接收这
    class ThirdReceiver extends BroadcastReceiver{
        public void onReceive(Context context, android.content.Intent intent) {
            Log.i("main","ThirdReceiver.onReceive()");
        };
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(mReceiver);//销毁的时候取消注册的广播接收者,释放资源。
    }
}
复制代码

第一个广播接收者:

复制代码
package com.sxt.day07_06;

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

public class FirstReceiver extends BroadcastReceiver {

    @Override
    //优先级第一的广播接收者
    public void onReceive(Context context, Intent intent) {
        String value=intent.getStringExtra("key");//mainActivity的字符串
        Log.i("main","FirstReceiver.onReceive():"+value);
        setResultData("来源于FirstReceiver的文本");//向第二级别的广播接收者发送字符串,
    }

}
复制代码

第二个广播接收者:

复制代码
package com.sxt.day07_06;

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

public class SecondReceiver extends BroadcastReceiver {

    @Override
    //优先级第二的广播接收者
    public void onReceive(Context context, Intent intent) {
        String value=intent.getStringExtra("key");//mainActivity的字符串
        String text=getResultData();//第一级别广播接收者发过来的数据
        Log.i("main","SecondReceiver.onReceive(),intent中携带的文本:"+value+","+text);
        if(isOrderedBroadcast()){//如果收到的广播是有序广播
            abortBroadcast();//终止广播
        }
    }

}
复制代码

系统描述文件:

复制代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.sxt.day07_06"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name="com.sxt.day07_06.FirstReceiver">   注册广播接收者
            <intent-filter android:priority="800">
                <action android:name="com.sxt.day07_06.order_broadcast"/>
            </intent-filter>
        </receiver>
        <receiver android:name="com.sxt.day07_06.SecondReceiver">
            <intent-filter android:priority="700">
                <action android:name="com.sxt.day07_06.order_broadcast"/>
            </intent-filter>
        </receiver>
    </application>

</manifest>
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/4893012.html,如需转载请自行联系原作者


相关文章
|
6月前
|
XML 安全 Java
Android Studio App开发之广播组件Broadcast的讲解及实战(包括收发标准、有序、静态广播实现手机震动功能 附源码)
Android Studio App开发之广播组件Broadcast的讲解及实战(包括收发标准、有序、静态广播实现手机震动功能 附源码)
526 0
|
Java Android开发
说说Android的广播(1) - 普通广播,有序广播和粘性广播
关于Broadcast,有几点需要了解。首先是广播的类型,然后是广播的发送方法,最后是广播是如何被接收的。这三者相辅相承的,比如普通广播和有序广播只有在详细了解了广播的接收过程了之后,才能真正明白它的含义。
6749 0
|
2天前
|
XML 存储 Java
探索安卓开发之旅:从新手到专家
【10月更文挑战第35天】在数字化时代,安卓应用的开发成为了一个热门话题。本文旨在通过浅显易懂的语言,带领初学者了解安卓开发的基础知识,同时为有一定经验的开发者提供进阶技巧。我们将一起探讨如何从零开始构建第一个安卓应用,并逐步深入到性能优化和高级功能的实现。无论你是编程新手还是希望提升技能的开发者,这篇文章都将为你提供有价值的指导和灵感。
|
1天前
|
存储 XML JSON
探索安卓开发:从新手到专家的旅程
【10月更文挑战第36天】在这篇文章中,我们将一起踏上一段激动人心的旅程,从零基础开始,逐步深入安卓开发的奥秘。无论你是编程新手,还是希望扩展技能的老手,这里都有适合你的知识宝藏等待发掘。通过实际的代码示例和深入浅出的解释,我们将解锁安卓开发的关键技能,让你能够构建自己的应用程序,甚至贡献于开源社区。准备好了吗?让我们开始吧!
10 2
|
2天前
|
Android开发
布谷语音软件开发:android端语音软件搭建开发教程
语音软件搭建android端语音软件开发教程!
|
10天前
|
编解码 Java Android开发
通义灵码:在安卓开发中提升工作效率的真实应用案例
本文介绍了通义灵码在安卓开发中的应用。作为一名97年的聋人开发者,我在2024年Google Gemma竞赛中获得了冠军,拿下了很多项目竞赛奖励,通义灵码成为我的得力助手。文章详细展示了如何安装通义灵码插件,并通过多个实例说明其在适配国际语言、多种分辨率、业务逻辑开发和编程语言转换等方面的应用,显著提高了开发效率和准确性。
|
9天前
|
Android开发 开发者 UED
安卓开发中自定义View的实现与性能优化
【10月更文挑战第28天】在安卓开发领域,自定义View是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何高效地创建和管理自定义View,以及如何通过代码和性能调优来确保流畅的交互体验。我们将一起学习自定义View的生命周期、绘图基础和事件处理,进而探索内存和布局优化技巧,最终实现既美观又高效的安卓界面。
21 5