Articles of greenrobot eventbus

哪种Activity生命周期方法最适合注册/注销到事件总线?

在活动中注册和注销事件总线(如otto,EventBus或tinybus)的最佳位置是什么?为什么? 的onCreate() – 的onDestroy() 在onStart() – 的onStop() 的onResume() – 的onPause() Otto的例子使用onResume() – onPause(),EventBus提到onStart() – onStop(),我们需要在我们的app中使用onCreate() – onDestroy()来更新活动的UI,即使它在后台也是如此。 所以我想它可以是三个中的任何一个,取决于事件的性质和它们的处理,但我想知道是否还有更多应该考虑的事情。

Android事件总线不适用于两个事件侦听器

在我的Android应用程序中,我使用了一个活动和适配器来进行列表视图,我的获得需要使用EventBus通过事件监听器来传递适配器类和活动,以便创build两个事件监听器类。 我的过程是: 1)我在活动中有一个button,button应该与Adapter类通信。 2)如果我点击文本视图(文本视图小部件列表视图)应该沟通活动类。 通过以下代码,它适用于适配器与Activity进行通信,但Activity不会与适配器类进行通信。 请帮助我如何沟通这两个类? 我已经发布了我的完整示例项目代码: 活动课: public class ListMobileActivity extends Activity {….}; private ListView list; private Button btn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EventBus.getDefault().register(ListMobileActivity.this); …… list.setAdapter(adapter); // Does not communicates with Adapter. btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { EventBus.getDefault().post(new TestEvent2("test event")); } }); } public void onEvent(TestFinishedEvent […]

Android中使用GreenRobot事件总线的IPC

我需要使用(greenrobot)EventBus与远程服务进行通信。 不幸的是,它似乎没有与IPC合作。 看看代码,我也没有看到解决方法。 任何帮助,将不胜感激 ! 奖金的问题 – 是否有任何其他的EventBuses(Android版)支持IPC?

Greenbot事件总线3.0:onEvent,onEventMainThread,onEventBackgroundThread和onEventAsync有什么区别?

我有点困惑onEvent , onEventMainThread , onEventBackgroundThread和onEventAsync在Greenrobot的EventBus 3.0中的用法 从我在文档中看到的内容 : onEvent使用ThreadMode.POSTING (默认) onEventMainThread与onEventMainThread使用 onEventBackgroundThread与onEventBackgroundThread使用 onEventAsync与onEventAsync使用 但是在事件从后台线程发布的情况下: @Subscribe(threadMode = ThreadMode.MAIN) public void onEventMainThread(MyEvent event) { // some UI manipulation } 具有与以下完全相同的行为: @Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(MyEvent event) { // some UI manipulation } 和: @Subscribe public void onEventMainThread(MyEvent event) { // some UI manipulation } 抛出CalledFromWrongThreadException: Only […]

android ui组件的事件总线和生命周期

我一直在寻找完美的android应用程序架构,并阅读了有关这个主题的一些很棒的博客post。 1) http://www.mdswanson.com/blog/2014/04/07/durable-android-rest-clients.html 2) http://birbit.com/a-recipe-for-writing-responsive-rest-clients-on-android/ 这两篇文章描述了如何利用事件总线在android组件之间进行通信(活动,片段,服务)。 其中一个,但非常重要的话题并没有涉及。 如何处理暂停时发布到UI组件的事件。 例如:服务正在完成将数据下载到活动的过帐事件。 此时活动暂停。 当事件总线在onPause()中被取消注册时,我们完全失去了这个事件。 EvenBus从greendao提供stickyevents。 但是如果不删除它们可能会导致内存泄漏。 来自广场的奥托介绍了“生产者”模式,可以用来代替粘性事件。 如果不手动删除粘性事件,则第一个解决scheme可能导致内存泄漏。 第二个需要保持数据的地方,直到生产者方法返回给订阅者。 这个解决scheme似乎更加正确,但是需要编写更多的代码。 任何人都可以请分享想法如何处理这个边缘情况? 任何清洁解决scheme

GreenRobot的事件总线不能看到注释,“没有公共方法”

所以,我发现了绿色机器人的事件总线模块。 按照此页面上的说明进行操作: http : //greenrobot.org/eventbus/documentation/how-to-get-started/ 看起来很简单。 我把相应的代码,但在设备上运行时,我得到一个崩溃: org.greenrobot.eventbus.EventBusException: Subscriber class com.crowdlab.activities.LoadingActivity and its super classes have no public methods with the @Subscribe annotation. 我class的前几行是这样的: public class LoadingActivity extends BaseActivity implements AlertDialogButtonListener { AlertDialog mDialog = null; AlertDialog mPushDialog = null; @Subscribe public void onMessageEvent(MessageEvent event){ Toast.makeText(this, "From Loading "+event.message, Toast.LENGTH_SHORT).show(); } @Override public void onStart() […]

使用Greenrobot Eventbusreplace广播接收机是否可以触发基于事件的function和数据从服务到活动的传输?

我已经实现了一个服务,在这里我处理状态变化(连接,断开连接,onServiceDiscoverd,onCharacteristicChange等),并通过gatt服务器从另一个设备接收数据。 我的问题是,使用Greenrobot Eventbusreplace服务和活动之间的广播接收器可以有效地处理事件吗?

我可以使用greenrobot EventBus进行活动和服务之间的沟通吗?

关于服务交stream,我可以使用EventBus库作为活动吗? 我在我的应用程序尝试这个如下: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EventBus.getDefault().register(this); setContentView(R.layout.activity_music_player); Intent serviceIntent=new Intent(MusicPlayerActivityTest.this,MusicPlayerServiceTest.class); startService(serviceIntent); EventBus.getDefault().post(new SetSongList(songArraList, 0)); } @Override protected void onDestroy() { EventBus.getDefault().unregister(this); super.onDestroy(); } 并在我的服务onEvent调用。

如何使用greenrobot将数据传递给尚未初始化的活动或片段?

我试图在活动和片段之间使用greenrobot传递数据,但是我找不到一个合适的教程来展示它是如何进行细节的。 基于迄今为止我读过的东西,我写了一些这样的东西,但它不工作,我可以使用绿色机器人将数据传递给还没有被初始化的活动或片段? 主要活动 : @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EventBus.getDefault().post(new String("We are the champions")); Intent intent = new Intent("com.test.Activity_Lessons"); startActivity(intent); } Activity_Lessons: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Some initializations EventBus.getDefault().register(this); //Other Stuff } public void onEventMainThread(String s){ Toast.makeText(getActivity(), s, Toast.LENGTH_LONG).show(); } 事件处理程序从来没有在这里调用。我做错了什么?

Otto / EventBus跨多个进程

是否有可能在一个进程中post事件(例如在具有android:process=":sync" manifest属性的SyncAdapter中)并在另一个(在常规应用UI内)使用Otto或EventBus接收它? 我知道Intent和BroadcastReceiver在多个进程间的通信方面工作得很好,但是我希望Otto / EventBus具有简单性和灵活性。