草庐IT

event-driven-design

全部标签

Android 优点和缺点 : Event Bus and RxJava

我一直在我的应用程序中使用事件总线(即:greenrobot/EventBus)。但是我发现使用EventBus有一些缺点:链式任务执行很困难很多类来表示事件不太清晰的代码(好吧,仍然可以追踪,但不是那么清晰)我一直在研究解决这个问题的新技术。我读了很多关于RxJava的文章,想知道它是否是一个解决方案。所以我关于RxJava的问题(基于我最近阅读的内容):可以随时注册RxJava观察者吗?所以不仅仅是在创建Observable时。使用EventBus这是可能的,我可以随时订阅,而不仅仅是在创建Observable时。您如何处理两个或多个发布者发布相同类型的事件(例如:导航事件)?将发

android - 事件总线 : Activity does not receive event when app is in the background

我正在使用EventBus在Activity和Service之间进行通信。今天我遇到了一个问题,不知道为什么。我有Activity、Fragment和Service。所有这些都工作正常。在Activity和Fragment中,我将它们注册到Receiveevents从Service交付在Activity和Fragment中,我在调用onDestroy()时取消注册它们.在正常情况下,当Services传递events时,Fragment和Activity可以接收到那些events并且运行良好。但是当App被推送到background时(通过按下Home或Power按钮),只有Fragm

android - 如何在android Material Design中实现如下动画?

想在android中实现这个动画。感谢任何帮助。 最佳答案 我还没有测试过这个,但它应该可以工作。将此依赖项添加到您的应用程序gradle文件中:编译'com.github.ozodrukh:CircularReveal:1.1.1'在Activity开始时声明这些变量:LinearLayoutmRevealView;booleanhidden=true;将此添加到您的onCreate方法中:mRevealView=(LinearLayout)findViewById(R.id.reveal_items);mRevealView.s

android - fragment : No subscribers registered for event class 中的 GreenRobot EventBus 错误

我有一个Activity,它的布局包含一个FrameLayout。我使用framelayout作为fragment容器。我使用FragmentManager事务替换了FrameLayout中的fragment。在fragment的一种onCreate方法中,我使用EventBus注册fragment。@OverridepublicvoidonCreate(){EventBus.getDefault().register(this);//otherinitializationcode}fragment在其布局中有一个GridView。每当单击gridView中的项目时,我都会将事件发布到

c++ - design ala "object.method1().method2().method3()"的术语是什么?

这个设计的术语是什么?object.method1().method2().method3()..当所有方法都返回*this?我不久前找到了这个词,但同时又忘记了。我不知道如何在谷歌上搜索这个:)另外,如果有人能为问题想出更好的标题,请随时更改。谢谢Update-Gishu:看了之后,我觉得你的问题是误导w.r.t.提供的代码片段..(随意回滚)方法链object.method1().method2().method3()流畅的界面privatevoidmakeFluent(Customercustomer){customer.newOrder().with(6,"TAL").with

c++ - Win32中是否有C++跨平台 "named event like the "CreateEvent()”?

我正在寻找类似于Win32世界中的CreateEvent()、SetEvent()和WaitForMultipleObjects()的东西。具体来说,这必须可以在同一台机器上跨进程访问。我们已经将Poco用于一些跨平台的东西,但我没有看到Poco::Event是我想要的。也许我遗漏了什么。编辑:解释我想做什么:我希望进程B知道进程A何时发生某些事情。这在win32中是微不足道的-每个进程/线程调用CreateEvent()并为事件命名。当发生某些事情时,进程B调用waitForXObject()并且进程A调用SetEvent()。B发出信号。同样,这在win32中很简单,但如何跨平台进

c++ - 是: "std::string can hold '\0' character" by design?

std::string实际上可以容纳'\0'字符这一事实一直都在出现。这当然与C风格的字符串不一致。所以我想知道,这是设计使然,还是遗漏,或者仅仅是标准不禁止它而编译器允许这种情况发生的事实? 最佳答案 我想知道你的争吵是什么。'\0'只是另一个字符。没有有效的方法可以在通用“char”字符串中禁止它。不幸的是,同一字符在C语言中具有特殊含义,但必须处理遗留代码在与它进行互操作时施加的每个限制。只要您坚持使用专门使用std::string的代码,这应该不是问题。为了解决您的意见,我们需要查看采用char*的构造函数,它将是basic

c++ - QML : Navigation between qml pages from design perception

我们需要开发一个QtQuick项目,其中我们有大约100个屏幕。我曾尝试为导航制作一个演示项目,点击按钮后会出现三个屏幕。我在页面之间的导航中使用了“状态”的概念。最初我尝试使用“加载器”进行相同的操作,但加载器无法保留页面的先前状态,它在导航期间重新加载整个页面。下面是main.qml的代码片段//importQtQuick1.0//totargetS605thEditionorMaemo5importQtQuick1.1Rectangle{id:main_rectanglewidth:360height:640Page1{id:page1}Page2{id:page2}Page3{

c# - 嵌入式单声道 : How do you raise an event in C++?

我正在开发一个嵌入了Mono的应用程序,我想将一个事件从C++层引发到C#层。这是我拥有的:void*itr(NULL);MonoEvent*monoEvent;while(monoEvent=mono_class_get_events(klass,&itr)){if(0==strcmp(eventName,mono_event_get_name(monoEvent)))raiseMethod=mono_event_get_raise_method(monoEvent);}但是,raiseMethod总是返回NULL。查看MonoEvent的结构,似乎填充了add和remove方法,但

c++ - 有限状态机 : Bad design?

有限状态机通常被认为是OOP中的糟糕设计吗?我经常听到这样的话。而且,在我不得不使用它来处理一个非常古老的、未记录的C++片段之后,我倾向于同意。调试起来很痛苦。可读性/可维护性问题如何? 最佳答案 FSM永远不应该被认为是坏的。它们太有用了,但不习惯它们的人通常会认为它们很麻烦。有许多方法可以使用OOP实现其中之一。有些比其他的更丑。您的底层人员将使用switch语句、跳转表甚至“goto”。如果您正在寻找一种更简洁的方法,我建议您使用Boost'sStateChartlibrary,它专为在C++中实现UML状态图而构建。它利用