EventBus

Vue事件总线 eventBus

落爺英雄遲暮 提交于 2019-11-30 02:20:19
如果项目不够大,没有引入 Vuex 的情况下,组件还不是父子组件的关系,也不适合使用 params、query 等路由传参方式进行传参的话,那组件之间应该如何通信呢? 公共事件总线 eventBus 的 实质 就是创建一个 vue 实例, 通过一个空的 vue 实例作为桥梁实现 vue 组件间的通信 。它是实现非父子组件通信的一种解决方案。 引入方式 方式一: 新建一个文件,比如叫 eventBus.js 然后放到项目根目录, 文件总共也就两行代码: import Vue from 'vue' export const eventBus = new Vue() 然后你的哪些组件需要通信,在那些组件中 import 导入即可。 方式二: 直接在 main.js 中: Vue.prototype.eventBus = new Vue() 方式三: 还是在 main.js 中: const app = new Vue({ el: "#app", router, data: { eventBus: new Vue() }, render: h => h(App) }); 需要注意的是:使用这种方式的时,调用是这样调用的: this.$root.eventBus 使用方式 使用 $emit 发送数据: <template> <div> <button @click="send"><

004-行为型-03-观察者模式(Observer)

╄→гoц情女王★ 提交于 2019-11-30 02:04:20
一、概述   当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。   定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖者(观察者)都会收到通知并更新。   Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。 1.1、适用场景   一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。   关联行为场景,建立一套触发机制 典型应用   1、侦听事件驱动程序设计中的外部事件   2、侦听/监视某个对象的状态变化   3、发布者/订阅者(publisher/subscriber)模型中,当一个外部事件(新的产品,消息的出现等等)被触发时,通知邮件列表中的订阅者 1.2、优缺点 优点: 观察者和被观察者之间建立一个抽象的耦合 观察者模式支持广播通信,建立一套触发机制。 缺点: 观察者之间有过多的细节依赖、提高时间消耗及程序复杂度 使用要得当,要避免循环调用 1.3、类图角色及其职责      1、Subject(被观察者)   被观察的对象。当需要被观察的状态发生变化时,需要通知队列中所有观察者对象。Subject需要维持(添加,删除,通知)一个观察者对象的队列列表。    2

MainThreadSupport

只谈情不闲聊 提交于 2019-11-29 21:59:56
MainThreadSupport EventBus 3.0 中的代码片段. org.greenrobot.eventbus.MainThreadSupport 定义一个接口,并给出默认实现类. 调用者可以在EventBus的构建者中替换该实现. public interface MainThreadSupport { boolean isMainThread(); Poster createPoster(EventBus eventBus); class AndroidHandlerMainThreadSupport implements MainThreadSupport { private final Looper looper; private AndroidHandlerMainThreadSupport(Looper looper) { this.looper = looper; } @Override public boolean isMainThread() { return looper == Looper.myLooper(); } @Override public Poster createPoster(EventBus eventBus) { return new HandlerPoster(eventBus, looper, 10); } } } 来源:

android -------- LiveDataBus的使用

假如想象 提交于 2019-11-29 15:03:14
LiveData是17年GoogleIO大会上提出来的一个新技术。相对于通信总线类型的框架EventBus和RxBus来说,它更简单,更简洁、更解耦。 LiveEventBus是一款Android消息总线,基于LiveData,具有生命周期感知能力,支持Sticky,支持AndroidX,支持跨进程,支持跨APP LiveDataBus优点 LiveDataBus的实现及其简单 相对EventBus复杂的实现,LiveDataBus只需要一个类就可以实现 LiveDataBus可以减小APK包的大小 LiveDataBus只依赖Android官方组件LiveData,本身实现只一个类。EventBus 57Kb、RxJava 2.2M LiveDataBus 依赖方支持更好 LiveDataBus只依赖Android官方组件LiveData,相比RxBus依赖的RxJava和RxAndroid,依赖方支持更好 LiveDataBus具有生命周期感知 LiveDataBus具有生命周期感知,在Android系统中使用调用者不需要调用反注册,相比EventBus和RxBus使用更为方便,并且没有内存泄漏风险。 LiveEventBus的特点 生命周期感知,消息随时订阅,自动取消订阅 支持Sticky粘性消息 支持AndroidX 支持跨进程通信 支持跨APP通信

用LiveDataBus替代RxBus、EventBus——Android消息总线的演进之路

人走茶凉 提交于 2019-11-29 13:09:15
背景 对于Android系统来说,消息传递是最基本的组件,每一个App内的不同页面,不同组件都在进行消息传递。消息传递既可以用于Android四大组件之间的通信,也可用于异步线程和主线程之间的通信。对于Android开发者来说,经常使用的消息传递方式有很多种,从最早使用的Handler、BroadcastReceiver、接口回调,到近几年流行的通信总线类框架EventBus、RxBus。Android消息传递框架,总在不断的演进之中。 从EventBus说起 EventBus是一个Android事件发布/订阅框架,通过解耦发布者和订阅者简化Android事件传递。EventBus可以代替Android传统的Intent、Handler、Broadcast或接口回调,在Fragment、Activity、Service线程之间传递数据,执行方法。 EventBus最大的特点就是:简洁、解耦。在没有EventBus之前我们通常用广播来实现监听,或者自定义接口函数回调,有的场景我们也可以直接用Intent携带简单数据,或者在线程之间通过Handler处理消息传递。但无论是广播还是Handler机制远远不能满足我们高效的开发。EventBus简化了应用程序内各组件间、组件与后台线程间的通信。EventBus一经推出,便受到广大开发者的推崇。 现在看来

Android 网速监测

倾然丶 夕夏残阳落幕 提交于 2019-11-28 15:23:52
我们都知道在游戏中会有实时网速监测。延迟XXms 这种 今天在Android 端也实现一下此功能,首先我们要知道网络延迟的几个等级 如何定义网络延迟程度: (一般网络延迟PING值越低速度越快,但是速度与延迟没有必然联系) 1~30ms:极快,几乎察觉不出有延迟,玩任何游戏速度都特别顺畅 31~50ms:良好,可以正常游戏,没有明显的延迟情况 51~100ms:普通,对抗类游戏在一定水平以上能感觉出延迟,偶尔感觉到停顿 100ms~200ms:较差,无法正常游玩对抗类游戏,有明显卡顿,偶尔出现丢包和掉线现象 200ms~500ms:很差,访问网页有明显的延迟和卡顿,经常出现丢包或无法访问 >500ms:极差,难以接受的延迟和丢包,甚至无法访问网页 >1000ms:基本无法访问 计算方法:1秒=1000毫秒(例:30ms为0.03秒) 我们在程序当中用以下方法实现ping 命令 String delay = new String(); Process p = null; String url= "www.baidu.com"; //指向服务端地址 try { p = Runtime.getRuntime().exec("ping -c 4 " +url);//PING 该地址 4次 BufferedReader buf = new BufferedReader(new

EventBus使用的坑

做~自己de王妃 提交于 2019-11-28 15:20:34
最近使用eventbus发送通知,在想该怎么携带List集合数据。于是尝试直接发送List。 使用一次,正常接收。使用两次,出现类转换异常。原来在接收List类型的消息时,并不会管List内的泛型,是List就会接收。因为EventBus将List作为一个对象去发送。 所以,需要处理一下接收的逻辑 @Subscribe(threadMode = ThreadMode.MAIN) public void getSynchroData(List<GroupTagBean> sysList) { for (Object obj : sysList) { if (!(obj instanceof GroupTagBean)) { return; } } mList.clear(); mList.addAll(sysList); notifyDataSetChange(); }  By LiYing 来源: https://www.cnblogs.com/widgetbox/p/11411855.html

android -------- LiveDataBus的使用

我们两清 提交于 2019-11-28 14:07:05
LiveData是17年GoogleIO大会上提出来的一个新技术。相对于通信总线类型的框架EventBus和RxBus来说,它更简单,更简洁、更解耦。 LiveEventBus是一款Android消息总线,基于LiveData,具有生命周期感知能力,支持Sticky,支持AndroidX,支持跨进程,支持跨APP LiveDataBus优点 LiveDataBus的实现及其简单 相对EventBus复杂的实现,LiveDataBus只需要一个类就可以实现 LiveDataBus可以减小APK包的大小 LiveDataBus只依赖Android官方组件LiveData,本身实现只一个类。EventBus 57Kb、RxJava 2.2M LiveDataBus 依赖方支持更好 LiveDataBus只依赖Android官方组件LiveData,相比RxBus依赖的RxJava和RxAndroid,依赖方支持更好 LiveDataBus具有生命周期感知 LiveDataBus具有生命周期感知,在Android系统中使用调用者不需要调用反注册,相比EventBus和RxBus使用更为方便,并且没有内存泄漏风险。 LiveEventBus的特点 生命周期感知,消息随时订阅,自动取消订阅 支持Sticky粘性消息 支持AndroidX 支持跨进程通信 支持跨APP通信

Android 解耦利器 EventBus

ε祈祈猫儿з 提交于 2019-11-27 20:25:23
  Andorid 开发过程中总会遇到各个模块耦合问题,使用EventBus是一种解耦方式。   EventBus 源代码下载地址 https://github.com/greenrobot/EventBus   如果一个ListView展示的内容需要到网络上请求该数据,那么该业务需要如下几个步骤: 1.发送请求拼装URL---> 2.发送请求--> 3.得到数据---> 4.渲染数据 //使用传统的Handler和线程 final Integer GET_DATA= 1001; final Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(msg.what == GET_DATA){ // 做渲染 } } }; new Thread(){ public void run() { //发送HTTP请求得到数据 String result = ""; //result = http.get("http://test.com/list"); Message message = handler.obtainMessage(); message.getData().putString("result",result)

Android EventBus

╄→尐↘猪︶ㄣ 提交于 2019-11-27 09:21:59
本文节选自电子书《Netkiller Android 手札》 Netkiller Android 手札 http://www.netkiller.cn/android/index.html Mr. Neo Chan, 陈景峯(BG7NYT) 中国广东省深圳市望海路半岛城邦三期 518067 +86 13113668890 < netkiller@msn.com > $Id: book.xml 606 2013-05-29 09:52:58Z netkiller $ 版权 © 2018 Neo Chan 版权声明 转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。 http://www.netkiller.cn http://netkiller.github.io http://netkiller.sourceforge.net 微信订阅号 netkiller-ebook (微信扫描二维码) QQ:13721218 请注明“读者” QQ群:128659835 请注明“读者” 2018-10 我的系列文档 编程语言 Netkiller Architect 手札 Netkiller Developer 手札 Netkiller Java 手札 Netkiller Spring 手札 Netkiller PHP 手札 Netkiller Python 手札