使用EventBus解决Activity生命周期使用问题

0x0问题概述

假设有三个Android的Activity类,分别为类A、类B、类C,在类A中通过startActivityForResult启动类B,类B通过startActivity启动类C,我希望由类C带回数据给类A,并且类A不重新绘制画面。怎么操作呢?

0x1解决方式

我通过EventBus的发布订阅机制,完美解决这个问题。当然这个问题,不乏其他解决方法,但是我认为这个方式是比较便捷的一种。

0x2求解过程

  1. 下载EventBus
    源码:https://github.com/greenrobot/EventBus
  2. 工程中添加EventBus
  3. 使用EventBus3步骤
EventBus in 3 steps

Define events:
public class MessageEvent { /* Additional fields if needed */ }

Prepare subscribers:
eventBus.register(this);
public void onEvent(AnyEventType event) {/* Do something */};

Post events:
eventBus.post(event);

在本例中
在onCreate中注册总线,在onDestory中反注册总线,

@Subscribe public void onEventMainThread(UriChangeEvent event) {
Log.i(“ellee”,event.getPath);
}
关于@Subscribe,我并未在使用文档上看到必须要加这个,不过我发现不加这个反而程序无法运行。

你可能感兴趣的:(Android)