很多时候我们有这样的需求,比如说,订单支付成功,需要更新订单列表或订单详情的订单状态,这时候我们就可以用到广播.

首先我们要使用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的使用的更多相关文章

  1. ACM/ICPC 之 数据结构-邻接表+BFS(TSH OJ-无线广播Broadcast)

    这道题中若能够构成互不干扰的区域,其构成的图其实就是汉密尔顿路(Hamilton road),因此如果能够观察出来可以直接转化为汉密尔顿路的存在性证明,即便不能观察,我相信ACMer也能转化为BFS问 ...

  2. NumPy 广播(Broadcast)

    NumPy 广播(Broadcast) 广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b ...

  3. Android 中的广播(Broadcast)

    Android 广播(broadcast) 饮水思源 本文章内容学习和总结自 郭霖大神:<Android第一行代码> Overview 就像我们的学校里的喇叭一样,是用来通知的.而Andr ...

  4. Numpy | 10 广播(Broadcast)

    广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 下面的图片展示了数组 b 如何通过广播来与数组 a 兼容. 4x ...

  5. Android中的广播Broadcast详解

    今天来看一下Android中的广播机制,我们知道广播Broadcast是Android中的四大组件之一,可见他的重要性了,当然它的用途也很大的,比如一些系统的广播:电量低.开机.锁屏等一些操作都会发送 ...

  6. 吴裕雄--天生自然Numpy库学习笔记:NumPy 广播(Broadcast)

    广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b 形状相同,即满足 a.shape == ...

  7. [源码分析] 从实例和源码入手看 Flink 之广播 Broadcast

    [源码分析] 从实例和源码入手看 Flink 之广播 Broadcast 0x00 摘要 本文将通过源码分析和实例讲解,带领大家熟悉Flink的广播变量机制. 0x01 业务需求 1. 场景需求 对黑 ...

  8. openfire广播broadcast插件怎么发送消息给所有用户(包括在线和离线)

    openfire广播broadcast插件怎么发送消息给所有用户(包括在线和离线): 打开openfire管理界面,找到服务器系统属性,添加一个属性(属性名:plugin.broadcast.all2 ...

  9. Android学习笔记--广播(Broadcast)

    1.Android广播分类 android的广播类型分为两类:标准广播和有序广播. 标准广播:异步广播,广播发出后,所有注册了的广播接收器都会同时接收到该广播.打个比方:做地铁过程中的语音播报,当列车 ...

  10. Effective TensorFlow Chapter 4: TensorFlow中的广播Broadcast机制【转】

    本文转载自:https://blog.csdn.net/LoseInVain/article/details/78763303 TensorFlow支持广播机制(Broadcast),可以广播元素间操 ...

随机推荐

  1. python入门:if和else的基本用法

    #!/usr/bin/env python # -*- coding:utf-8 -*- #2.X用raw_input,3.X用input #if和else的基本用法 name = input(&qu ...

  2. 如何用纯 CSS 创作一个文本淡入淡出的 loader 动画

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ERwpeG 可交互视频 ...

  3. List<Object>删除某一个Object

    1.直接删除: List<LineShop> tlineprices  = new ArrayList<>(); tlineprices.remove(0); 2.使用遍历删除 ...

  4. 解决oh-my-zsh卡顿问题

    git config --global oh-my-zsh.hide-status 1

  5. 用\r做出进度条

    在做ftp作业的时候,需要做一个上传和下载的进度条,做的时候发现用\r很容易就能做出来 def show_progress(self, has, total): rate = float(has) / ...

  6. python数据类型之字符串(str)和其常用方法

    字符串是有序的,不可变的. 下面的例子说明了字符串是不可变的 name = 'alex' name = 'Jack' """ 并没有变,只是给name开启了一块新内存,储 ...

  7. JQuery根据字母检索元素并导航到指定位置

    介绍:类似于实现ios通讯录中右侧字母,快速导航到联系人的效果,如图: Html代码如下,分别是字母和港星名字的排序: <input type="text" id=" ...

  8. 各浏览器对 window.open() 的支持

    原文地址

  9. 00018_流程控制语句switch

    1.选择结构switch switch 条件语句也是一种很常用的选择语句,它和if条件语句不同,它只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码. 2.switch语句的语法格式 swit ...

  10. Markdown,后缀MD

    Markdown 算是一门新兴语言,现在 7-8 岁了吧.它设计的初衷就是让写字的人专注于写字,用纯文本简单的符号标记格式,最后再通过工具转换成鬼畜的 HTML/XHTML.如果你玩过 wikiped ...