在没用eventBus之前一直用Android广播方式通知消息更新UI

广播写法

首先发送广播通知

Intent intent = new Intent();
intent.setAction("action.refreshFriend"); //名称自定义标识是哪个通知消息
sendBroadcast(intent);

接收广播通知

首先注册广播

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("action.refreshFriend");
registerReceiver(mRefreshBroadcastReceiver, intentFilter);

private BroadcastReceiver mRefreshBroadcastReceiver = new BroadcastReceiver() { 

@Override 
public void onReceive(Context context, Intent intent) { 
String action = intent.getAction(); 
if (action.equals("action.refreshFriend")) 

  //更新UI


};

 

protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mRefreshBroadcastReceiver); //销毁广播
}

----------------------------------------------------------------

https://github.com/greenrobot/EventBus

EventBus是Android的发布/订阅事件总线优化。

首先添加引用 

 compile 'org.greenrobot:eventbus:3.0.0'

MainActivity代码
package com.freexiaoyu.enevtbus;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity {
    @BindView(R.id.tv_test)
    TextView tv_text;
    @BindView(R.id.btn_post)
    Button btn_post;
    @BindView(R.id.btn_post2)
    Button btn_post2;
    @BindView(R.id.btn_post3)
    Button btn_post3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        EventBus.getDefault().register(this);
    }

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void helloEventBus(Event event) {
        switch (event.getType()){
            case 1:
                tv_text.setText(event.getMessage().toString());
                break;
            case 2:
                tv_text.setText(event.getMessage().toString());
                break;
            case 3:
                tv_text.setText(event.getMessage().toString());
                break;
        }

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }

    @OnClick({R.id.btn_post,R.id.btn_post2,R.id.btn_post3})
    public void submit(View view) {
        switch (view.getId()){
            case R.id.btn_post:
                EventBus.getDefault().post(new Event(1,"我是老大"));
                break;
            case R.id.btn_post2:
                EventBus.getDefault().post(new Event(2,"我是老二"));
                break;
            case R.id.btn_post3:
                Intent intent=new Intent(MainActivity.this,TestActivity.class);
                startActivity(intent);
                break;
        }
    }
}
View Code

相关文章:

  • 2021-05-21
  • 2021-08-28
  • 2021-12-12
  • 2022-12-23
  • 2022-12-23
  • 2021-07-28
  • 2022-02-21
猜你喜欢
  • 2021-06-18
  • 2022-01-12
  • 2021-09-01
  • 2022-12-23
  • 2021-10-09
  • 2021-08-15
相关资源
相似解决方案