EventBus 使用 一点点记录

版权申明:https://mp.csdn.net/postedit

看了网上大神门写的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  文言 已经改变了

猜你喜欢

转载自blog.csdn.net/qq_32425789/article/details/88224756