Broadcast发送广播
一、知识介绍
1、【广播分类】
①有序广播:接收者A收到广播传递给B,B传给C,有序传递。任何一个环节都可以终止广播,也可以修改广播中携带的数据。
发送的方式:sendOrderedBroadcast(intent,receiverPermission);
【提示】①第二个参数是设置发送的权限,这里可以设为null
②接收有序广播是需要在intent-flter中设置priority,值越大则先执行,相同则按照注册顺序
②无序广播:一个广播发送者,向所有接收者同时发送广播,也就是ABC接收者都同时响应。
发送方式:sendBroadcast(intent)
2、【广播接收者】按是否常驻分类
①常驻型广播接收者:在androidManifest.xml中注册,只要应用程序没有被卸载就持续存在。
②非常驻型广播接收者:在java代码中注册,一般随Activity或者Service组件产生而产生,随他们销毁而销毁。生命周期比较短。使用的方法是registerReceiver(参数1:广播接收者实例,参数2:频道(意图过滤器));unregisterReceiver(广播接收者实例)
二、项目一【发送广播】
【步骤】
①定义一个广播接收者,自定义添加intent-fliter中的action name
②添加按钮,点击事件
③定义intent,设置action,发送广播
【项目结构】

【MyReceiver】
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast; public class MyReceiver extends BroadcastReceiver { @Override
public void onReceive(Context context, Intent intent) {
// TODO: This method is called when the BroadcastReceiver is receiving
Toast.makeText(context, "收到广播", Toast.LENGTH_SHORT).show();
}
}
【AndroidManifest.xml】
<receiver
android:name=".receiver.MyReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.example.MyApplication2.myreceiver" />
</intent-filter>
</receiver>
【activity_main.xml】
<Button
android:id="@+id/btn"
android:text="发送广播"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
【MainActivity】
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button; public class MainActivity extends AppCompatActivity { Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); btn = findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent("com.example.MyApplication2.myreceiver");
sendBroadcast(intent);
}
}); }
}
【提示】发送广播intent设置的action要和广播接受者设置的action相同,这样广播接收者才能收到发送的广播
【效果】点击

二、项目二【发送有序广播】
【步骤】
①定义三个广播接收者,观察顺序
②添加按钮点击
③设置intent,发送有序广播
【项目结构】

【定义三个广播接收者并注册】
<receiver
android:name=".receiver.MyOrderReceiver1"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="1000">
<action android:name="com.example.MyApplication2.myreceiver" />
</intent-filter>
</receiver>
<receiver
android:name=".receiver.MyOrderReceiver2"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.example.MyApplication2.myreceiver" />
</intent-filter>
</receiver>
<receiver
android:name=".receiver.MyOrderReceiver3"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="10">
<action android:name="com.example.MyApplication2.myreceiver" />
</intent-filter>
</receiver>
【提示】设置priority为不同的值,action name为相同的,接收同一个广播



【MainActivity】
btn2 = findViewById(R.id.btn2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent("com.example.MyApplication2.myreceiver");
sendOrderedBroadcast(intent,null);
}
});
【效果】
点击按钮执行顺序



Broadcast发送广播的更多相关文章
- 在命令行中通过adb shell am broadcast发送广播通知
通过命令行执行adb shell am broadcast发送广播通知. adb shell am broadcast 后面的参数有:[-a <ACTION>][-d <DATA_U ...
- Android通过adb shell am broadcast发送广播 参数说明
通过命令行执行adb shell am broadcast发送广播通知. adb shell am broadcast 后面的参数有: <INTENT> specifications in ...
- [AX2012]发送广播邮件
AX 2012可以使用MAPI或者SMTP发送邮件,MAPI是客户端方法,需要outlook的协作,而SMTP则是服务器端方法,要求SMTP允许AOS服务器通过它中继.这里要讲的就是如何通过SMTP发 ...
- 通过 adb命令发送广播
我们经常用到模块设备发送广播,此处记录一下: 首先进入adb 使用命令: adb shell 发送广播 例: am broadcast -a action.com.custom.broadcast.q ...
- Android应用程序发送广播(sendBroadcast)的过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6744448 前面我们分析了Android应用程 ...
- linux中C语言发送广播报文
2. 指令的解决方法: oute add -net 255.255.255.255 netmask 255.255.255.255 dev eth0 metric 1 或者 route add -ho ...
- Android 两种注册、发送广播的区别
前言:前面文章记录了Service的使用,这次来记录另一个四个组件之一的BroadcastReceiver.主要介绍两种发送和注册广播的区别. BroadcastReceiver广播接收者用于接收系统 ...
- Ordered Broadcast有序广播
sendBroadcast()发生无序广播 sendOrderedBroadcast()发送有序广播 activity_main.xml <LinearLayout xmlns:android= ...
- Angular发送广播和接收广播
home.module.ts import {BroadcastService} from "../broadcast.service"; @NgModule({ imports: ...
随机推荐
- Netty的核心组件
Netty的主要组成模块: Channels Callbacks Futures Events 和 handlers 这些模块代表了不同类型的概念:资源,逻辑和通知.你的应用将会利用这些模块来获取网络 ...
- [Swift]LeetCode830. 较大分组的位置 | Positions of Large Groups
In a string S of lowercase letters, these letters form consecutive groups of the same character. For ...
- 10 个深恶痛绝的 Java 异常。。
异常是 Java 程序中经常遇到的问题,我想每一个 Java 程序员都讨厌异常,一 个异常就是一个 BUG,就要花很多时间来定位异常问题. 什么是异常及异常的分类请看这篇文章:一张图搞清楚 Java ...
- WeakHashMap
WeakHashMap 今天在具体业务的时候看到HashMap和WeakHashMap的区别.因为PHP语言并没有这种概念.所以很好奇做了一下研究. WeakHashMap WeakHashMap所谓 ...
- 死磕 java集合之ArrayList源码分析
欢迎关注我的公众号"彤哥读源码",查看更多源码系列文章, 与彤哥一起畅游源码的海洋. 简介 ArrayList是一种以数组实现的List,与数组相比,它具有动态扩展的能力,因此也可 ...
- metasploit无法连接postgresql
注:倒数两条可以不做. 问题地址:https://askubuntu.com/questions/50621/cannot-connect-to-postgresql-on-port-5432 设置好 ...
- Zookeeper知识点
Zookeeper是一个分布式协调服务 Zookeeper服务器的角色 Leader: 所有的写操作必须要经过Leader完成,在广播给其它服务器.心跳检测.集群中只有一个Leader. Follow ...
- 使用Autofac动态注入启动Api服务
Autofac Autofac(https://autofac.org/)是一款.NET的IOC组件,它可以和Owin, Web Api, ASP.NET MVC, .NET Core完美结合,帮助开 ...
- [工具]PyCharm激活、注册码无效解决办法
前言 我是个 Pythoner,开发工具一直使用的 JetBrains 的 PyCharm.我师傅告诉过我:一个程序员一定要有一个用的很 6 的 IDE,你的开发效率会提高很多,很多... 我从小白的 ...
- [MySQL]支持 emoji(字符集问题)
问题的根源 主要问题就是在字符集,一般解决这种问题都是靠试验.我实验了一通,得出的结论和大家分享一下(如有错误,还望指正): 数据库的字符集 数据库连接的字符集 配置方法 设置数据库的字符集为utf8 ...