看了网上大神门写的EventBus 写的使用, 我自己也用了用,确实蛮不错 , 依样画葫芦写一写
首先看一下最基础的使用
EventBus是什么 一个Android事件发布/订阅轻量级框架 一张图说明
作用 (百度)
-
简化了组件间的通讯。
-
分离了事件的发送者和接受者。
-
在Activity、Fragment和线程中表现良好。
-
避免了复杂的和易错的依赖关系和生命周期问题。
-
使得代码更简洁,性能更好。
-
更快,更小(约50k的jar包)。
我使用的EventBus版本
一、简单使用
package com.example.yangzhan.eventbustest; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private static final String TAG = "MainActivity"; private Button mButton; private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EventBus.getDefault().register(this); //注册EventBus mButton=findViewById(R.id.bt_try); mTextView=findViewById(R.id.tv); mTextView.setText("旗舰,测试EventBus"); mButton.setOnClickListener(this); } @Override protected void onStart() { super.onStart(); String str=EventBus.getDefault().toString(); if (str != null) { Log.d(TAG, "onStart: eventbus == "+str); } } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); //解除注册 } @Subscribe public void onEventBus(MessageEvent messageEvent){ //EventBus 传过来的数据 String str="收到的消息 ="+messageEvent.getMessge(); Log.d(TAG, "onEventBus: ="+str); mTextView.setText(str); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.bt_try: Log.d(TAG, "MainActivity onClick: "); startActivity(new Intent(MainActivity.this,SecondActivity.class)); break; } } }
注释上已经写好了MainActivity 这个类 作用是用来 接收 从 SecondActivity 传过来的数据的 @Subscribe 这个注解用于接收从别的地方传回来的数据,onEventBus()此方法 是自己命名的,当然 里面的参数 必须的传递过来的数据是一致的
package com.example.yangzhan.eventbustest; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import org.greenrobot.eventbus.EventBus; public class SecondActivity extends AppCompatActivity implements View.OnClickListener { private Button mButton; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); mButton=findViewById(R.id.btn_first_event); mButton.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_first_event: EventBus.getDefault().post(new MessageEvent("这是由 secondActivity 发送的消息!!")); post传递数据 finish(); break; } } }
这个SecondActivity 主要作用是用来发送post数据的
这里写了一个 MessageEvent 的javaBean 类用来做对象 传递, 也可以随便传递任意数据
public class MessageEvent { private String messge; public MessageEvent(String messge){ this.messge=messge; } public String getMessge() { return messge; } public void setMessge(String msg){ this.messge=msg; } }
MainActivity 点击 BT_TRY 按钮 跳转 SecondActivity
点击FIRST EVENT 按钮 , 回到 MainActivity 切 textView 文言 已经改变了