EventBus 页面传值并启动Activity

使用EventBus 对于程序控制很方便,但是一直有一种情况用不了EventBus,就是在事件的接收方还没有启动的情况下怎么发广播: 如有A,B, 两个Activity , App当前处在 A Activity 现在要向B传递一个值并且启动B Activity, 正常情况下在A 发送 EventBus.getDefault().post(new Event()); 但是有一个问题,此时B还没有启动, B也没办法成功接收这个事件。那怎么解决:


public class AActivity extends Activity {
  // 某个点击事件
  @Override 
  public void onClick(View v) {
    Event event= new Event(10);
    // 发布Sticky事件
    EventBus.getDefault().postSticky(event);
    // 跳转到B页面
    Intent intent = new Intent(this, BActivity.class);
    startActivity(intent);
  }
}

最后我们看看BActivity如何接收数据。

public class BActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_b);
    // 以Sticky的形式注册
    EventBus.getDefault().registerSticky(this);
  }
  @Subscriber
  private void receiveUser(Event event){
     // 这里实现你的逻辑即可, event即为传递过来的Event对象
  }
}

你可能感兴趣的:(android开发)