EventBus3.0簡(jiǎn)單介紹(代碼)

build.gradle中添加引用

compile 'org.greenrobot:eventbus:3.0.0'

基本代碼

SecondActivity 執(zhí)行事件發(fā)布
public class SecondActivity extends AppCompatActivity implements View.OnClickListener {
  private  Button btnMain;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        btnMain = (Button) findViewById(R.id.btnMain);
        btnMain.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnMain:
                EventBus.getDefault().post(new MainMessage("傳遞信息:aikaifa"));//事件發(fā)布
                //此處可用EventBus.getDefault().post(String),方便在訂閱處(@Subscriber)進(jìn)行判斷,可自定義static final String類型,自定義類似注冊(cè)登錄等的判斷,方便做判斷
                finish();
                break;
        }
    }
}
MainActivity執(zhí)行事件訂閱
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button btnMain, btnBackground, btnAsync, btnPosting, btn1;
    private TextView tv_desc;

    private String TAG = MainActivity.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//必須進(jìn)行EventBus注冊(cè)
        EventBus.getDefault().register(this);
        initView();
        initClick();

    }

    /**
     * 按鈕點(diǎn)擊
     */
    private void initClick() {
        btnMain.setOnClickListener(this);
        btnBackground.setOnClickListener(this);
        btnAsync.setOnClickListener(this);
        btnPosting.setOnClickListener(this);
        btn1.setOnClickListener(this);
    }

    /**
     * 初始化View
     */
    private void initView() {

        btnMain = (Button) findViewById(R.id.btnMain);
        btnBackground = (Button) findViewById(R.id.btnBackground);
        btnAsync = (Button) findViewById(R.id.btnAsync);
        btnPosting = (Button) findViewById(R.id.btnPosting);

        btn1 = (Button) findViewById(R.id.btn1);
        tv_desc = (TextView) findViewById(R.id.tv_desc);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
//必須執(zhí)行EventBus取消注冊(cè)操作
        EventBus.getDefault().unregister(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnMain:
                EventBus.getDefault().post(new MainMessage("MainMessage"));
                break;
            case R.id.btnBackground:
                EventBus.getDefault().post(new BackgroundMessage("BackgroundMessage"));
                break;
            case R.id.btnAsync:
                EventBus.getDefault().post(new AsyncMessage("AsyncMessage"));
                break;
            case R.id.btnPosting:
                EventBus.getDefault().post(new PostingMessage("PostingMessage"));
                break;
            case R.id.btn1:
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(intent);
                break;

        }
    }

//以下必須在方法前進(jìn)行注解@Subscribe
/**  @Subscribe
 *   public void onMainEventBus(String msg) {
 *      //可以通過msg進(jìn)行判斷
 *      if(msg.equals(**)){
 *       //進(jìn)行判斷,判斷是登錄還是注冊(cè)還是其他自定義操作
 *      }
 *      
 *   }
 **/

    //主線程中執(zhí)行
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onMainEventBus(MainMessage msg) {
        Log.e(TAG, msg.getMessage());
        tv_desc.setText(msg.getMessage());
    }

    //后臺(tái)線程
    @Subscribe(threadMode = ThreadMode.BACKGROUND)
    public void onBackgroundEventBus(BackgroundMessage msg) {
        Log.e(TAG, msg.getMessage());
    }

    //異步線程
    @Subscribe(threadMode = ThreadMode.ASYNC)
    public void onAsyncEventBus(AsyncMessage msg) {
        Log.e(TAG, msg.getMessage());

    }

    //默認(rèn)情況,和發(fā)送事件在同一個(gè)線程
    @Subscribe(threadMode = ThreadMode.POSTING)
    public void onPostEventBus(PostingMessage msg) {

        Log.e(TAG, msg.getMessage());
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,951評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,381評(píng)論 25 708
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,958評(píng)論 6 342
  • 檸檬汁和初戀S君在一起兩年多,他不抽煙不喝酒,不撩妹,不沉迷電子游戲,學(xué)習(xí)成績(jī)優(yōu)異,除了看書和運(yùn)動(dòng)幾乎沒有什么...
    不誤正業(yè)閱讀 406評(píng)論 0 0
  • 不知道大家有沒有觀察過這樣一種現(xiàn)象,就是不論是在買東西的時(shí)候排隊(duì)還是檢票上車的入口排隊(duì),隊(duì)伍越排越長(zhǎng)的越來越擁擠....
    午米閱讀 509評(píng)論 4 10