EventBus 頁面傳值並啟動Activity
阿新 • • 發佈:2019-02-17
使用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物件
}
}