根据事件订阅都函数名称的不同,会使用不同的ThreadMode,比如果在后台线程加载了数据想在UI线程显示,订阅者只需把函数命名为onEventMainThread。
public void onEventMainThread
EventBus.getDefault().register(this)
EventBus.getDefault().post(new MyEvent())
public class MainActivity extends ActionBarActivity {
private ConditionVariable mConditionVariable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mConditionVariable = new ConditionVariable();
EventBus.getDefault().register(this);
initUI();
startActivity(new Intent(this, TwoActivity.class));
new Thread(new SleepThread()).start();
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
TextView mTxtOne;
private void initUI() {
mTxtOne = (TextView) findViewById(R.id.txt_one);
}
public void onEventMainThread(EventOne eventOne) {
Log.i("MainActivity", "MainActivity,,,onEventMainThread");
mTxtOne.setText(eventOne.getString());
}
// public void onEventAsync(EventOne eventOne) {
// Log.i("MainActivity", "onEventAsyc--->" + Thread.currentThread().getName());
// }
//
// public void onEventBackgroundThread(EventOne eventOne) {
// Log.i("MainActivity", "onEventBackgroundThread--->" + Thread.currentThread().getName());
// }
// public void onEventPostThread(EventOne eventOne) {
// Log.i("MainActivity", "onEventPostThread--->" + Thread.currentThread().getName());
// }
class SleepThread implements Runnable {
@Override
public void run() {
Log.i("Activity", "MainActivity,,,SleepThread--->begin");
mConditionVariable.block(2000);
Log.i("Activity", "MainActivity,,,SleepThread--->end");
EventBus.getDefault().post(new EventOne("11111"));
}
}
}
public class EventOne {
String string;
public EventOne(String string) {
this.string = string;
}
public String getString() {
return string;
}
}
本文转自我爱物联网博客园博客,原文链接:http://www.cnblogs.com/yydcdut/p/4290846.html,如需转载请自行联系原作者