eventbus使用_Android EventBus框架的使用介绍

62e4fbcd9fc840d17703622f0ada6810.png

EventBus 是Android和Java数据通信的一个简捷框架,在Android中,主要用于线程直接的通信以及Activity,Fragment等之间的数据交互等

官方介绍

  • 简化组件之间的通信,解耦事件发送方和接收方,可以很好地处理Activity、Fragment和后台线程直接的数据交互,避免复杂且容易出错的依赖项和生命周期问题
  • 使您的代码更简单
  • 更快捷
  • 小(60k 的jar包)
  • 被安装在十亿以上的应用程序实践证明
  • 具有发送线程、用户优先级等高级功能
af8f0b9e2fe2445770d91d88f70c8bc6.png

EventBus 的使用

2d4b6aa3800bf74c0e30096d9d5d28d4.gif

效果图

1.引入EventBus

implementation 'org.greenrobot:eventbus:3.2.0'

2.定义一个消息类,例如MessageEvent

public class MessageEvent {    private String message;    public MessageEvent(String message) {        this.message = message;    }    public String getMessage() {        return message;    }    public void setMessage(String message) {        this.message = message;    }}

3.全部代码列表

public class MainActivity extends AppCompatActivity {    TextView mTvText;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mTvText = findViewById(R.id.tv_text);        EventBus.getDefault().register(this);    }        public void onClick(View view) {        Intent intent = new Intent(this, Page1Activity.class);        startActivity(intent);    }    @Subscribe    public void onMessageEvent(MessageEvent messageEvent) {        mTvText.setText(messageEvent.getMessage());    }}
//activity_main.xml 布局文件
public class Page1Activity extends AppCompatActivity {    TextView mTvMessage;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_page1);        mTvMessage = findViewById(R.id.tv_message);    }    public void onMessageClick(View view) {        String message = "我是一个消息";        mTvMessage.setText(message);        MessageEvent messageEvent = new MessageEvent(message);        EventBus.getDefault().post(messageEvent);    }}
//activity_page1.xml 布局文件

PS :要注意register和unregister 方法的调用的时机,要配合Activity的生命周期或者Fragment的生命周期。不然会出现Post了消息,但无法收到消息的情况喔!!!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部