广播broadcast的使用
很多时候我们有这样的需求,比如说,订单支付成功,需要更新订单列表或订单详情的订单状态,这时候我们就可以用到广播.
首先我们要使用Intent来发送一个广播
定义一个全局的广播名字
public static final String DOLOGOUTTRUE ="com.example.se7en.dreamcity.do_logout_true";
Intent intent = new Intent();
intent.setAction(DOLOGOUTTRUE);
intent.putExtra("dolog_true", "dolog_true");
sendBroadcast(intent);
注册方式:
1、创建一个继承与BroadcastReceiver的类
实现继承的方法
在使用回调函数来实现 你想要发送的参数,然后在activity判断这个字符串是不是发送的这个,如果是,进行更新。
public class DologoutReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String isTrue = intent.getStringExtra("dolog_true");
if (onDologoutTrue != null) {
onDologoutTrue.getIstrue(isTrue);
} } public interface OnDologoutTrue {
void getIstrue(String state);
} public OnDologoutTrue onDologoutTrue; public void setOnDologoutTrue(OnDologoutTrue onDologoutTrue) {
this.onDologoutTrue = onDologoutTrue;
}
}
在AndroidManifest中注册这个广播
切记 action里的name 和你定义的全局变量DOLOGOUTTRUE的内容一样
<receiver android:name=".receiver.DologoutReceiver">
<intent-filter>
<action android:name="com.example.se7en.dreamcity.do_logout_true"></action> </intent-filter>
</receiver>
在需要更新的页面 初始化,方法扔oncrete里面就可以。
/**
* 广播接收者
*/
private void initReceiver() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(DOLOGOUTTRUE);
DologoutReceiver receiver = new DologoutReceiver();
registerReceiver(receiver, intentFilter);
receiver.setOnDologoutTrue(this);
}
最后一步,在你的activity里implements 你的回调函数,完成未实现的方法。
public class MainActivity extends AppCompatActivity implements View.OnClickListener, DologoutReceiver.OnDologoutTrue
@Override
public void getIstrue(String state) {
if (state.equals("dolog_true")) {
loginDialog.show();
}
}
2、代码动态注册广播
orderReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(StaticInApp.UPDATE_ORDER_DETAIL_NEW)) {
getOrderInfo();
}
}
}; IntentFilter filter_update = new IntentFilter();
filter_update.addAction(StaticInApp.UPDATE_ORDER_DETAIL_NEW);
registerReceiver(orderReceiver, filter_update);
切记onDestroy里解注册广播
@Override
protected void onDestroy() {
super.onDestroy();
if(orderReceiver!=null){
unregisterReceiver(orderReceiver);
}
}
遇到的坑:
父类里面定义的广播,子类就算重写receiver,也不会接收到。最好的方法是在各自的子类定义各自的receiver和对应的action。
By LiYing
广播broadcast的使用的更多相关文章
- ACM/ICPC 之 数据结构-邻接表+BFS(TSH OJ-无线广播Broadcast)
这道题中若能够构成互不干扰的区域,其构成的图其实就是汉密尔顿路(Hamilton road),因此如果能够观察出来可以直接转化为汉密尔顿路的存在性证明,即便不能观察,我相信ACMer也能转化为BFS问 ...
- NumPy 广播(Broadcast)
NumPy 广播(Broadcast) 广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b ...
- Android 中的广播(Broadcast)
Android 广播(broadcast) 饮水思源 本文章内容学习和总结自 郭霖大神:<Android第一行代码> Overview 就像我们的学校里的喇叭一样,是用来通知的.而Andr ...
- Numpy | 10 广播(Broadcast)
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 下面的图片展示了数组 b 如何通过广播来与数组 a 兼容. 4x ...
- Android中的广播Broadcast详解
今天来看一下Android中的广播机制,我们知道广播Broadcast是Android中的四大组件之一,可见他的重要性了,当然它的用途也很大的,比如一些系统的广播:电量低.开机.锁屏等一些操作都会发送 ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 广播(Broadcast)
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b 形状相同,即满足 a.shape == ...
- [源码分析] 从实例和源码入手看 Flink 之广播 Broadcast
[源码分析] 从实例和源码入手看 Flink 之广播 Broadcast 0x00 摘要 本文将通过源码分析和实例讲解,带领大家熟悉Flink的广播变量机制. 0x01 业务需求 1. 场景需求 对黑 ...
- openfire广播broadcast插件怎么发送消息给所有用户(包括在线和离线)
openfire广播broadcast插件怎么发送消息给所有用户(包括在线和离线): 打开openfire管理界面,找到服务器系统属性,添加一个属性(属性名:plugin.broadcast.all2 ...
- Android学习笔记--广播(Broadcast)
1.Android广播分类 android的广播类型分为两类:标准广播和有序广播. 标准广播:异步广播,广播发出后,所有注册了的广播接收器都会同时接收到该广播.打个比方:做地铁过程中的语音播报,当列车 ...
- Effective TensorFlow Chapter 4: TensorFlow中的广播Broadcast机制【转】
本文转载自:https://blog.csdn.net/LoseInVain/article/details/78763303 TensorFlow支持广播机制(Broadcast),可以广播元素间操 ...
随机推荐
- Linux 用户管理切换用户su和提取命令sudo-visudu详解
一.su --run a shell with substitute user and group IDs -,-l,--login make the shell a login shell, cle ...
- ESP8266入门学习笔记1:资料获取
乐鑫官网:https://www.espressif.com/zh-hans/products/hardware/esp8266ex/overview 乐鑫资料:https://www.espress ...
- Linux学习-核心编译的前处理与核心功能选择
硬件环境检视与核心功能要求 根据自己的需求来确定编译的选项 保持干净原始码: make mrproper 我们还得要处理一下核心原始码底下的残留文件才行!假设我们是第一次 编译, 但是我们不清楚到底下 ...
- selenium2用AutoIt上传文件
1.标签是input,如下图所示: WebElement e1= driver.findElement(By.id("load"));//输入要上传文件的地址e1.sendKeys ...
- POJ2594拐点弯的二分
开始读题没理解题意,以为就是覆盖,可是怎么交都不对... 我就气愤了,结果去百度了一下发现奶奶的这题的机器人是可以隔点瞭望的,例如1->2->3.2->4.5->2 这个图 ...
- Python虚拟机函数机制之位置参数(四)
位置参数的传递 前面我们已经分析了无参函数的调用过程,我们来看看Python是如何来实现带参函数的调用的.其实,基本的调用流程与无参函数一样,而不同的是,在调用带参函数时,Python虚拟机必须传递参 ...
- Jenkins自动化搭建测试环境(一)
Jenkins基础 首先上官网jenkins.io上下载最新的Jenkins war包 将下载完成的war包解压 java -jar jenkins.war 接下来使用浏览器访问localhost:8 ...
- luogu3203 [HNOI2010]弹飞绵羊
lct裸题 #include <iostream> #include <cstdio> using namespace std; int n, ski[200005], m, ...
- JDK并发基础与部分源码解读
之前写的一个ppt 搬到博客来
- python week08 并发编程之多线程--实践部分
一. threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍 官网链接:https://docs.pytho ...