Android-EventBus3.0的使用简单使用记录

来源:互联网 发布:普林数据 编辑:程序博客网 时间:2024/05/21 17:49

一、添加库


二、创建一个消息封装

public class MyMessage{    private String msg;    public MyMessage()    {    }    public String getMsg()    {        return msg;    }    public void setMsg(String msg)    {        this.msg = msg;    }}
三、创建一个消息接收器

public class Econtrl{    private TextView view;    public Econtrl(TextView view)    {        this.view = view;        EventBus.getDefault().register(this);//订阅    }    @Subscribe(threadMode = ThreadMode.MAIN)    public void setViewMsg(MyMessage msg)    {        view.setText(view.getText()+"\n"+msg.getMsg());    }}
四、创建布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:orientation="vertical"    tools:context="tusirui.androideventbus.MainActivity">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="200dp"        android:background="#acacac"        android:orientation="horizontal">        <LinearLayout            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:layout_margin="2dp"            android:background="#ffffff"            android:orientation="vertical"            >            <TextView                android:layout_width="match_parent"                android:layout_height="30dp"                android:gravity="center_vertical"                android:text="消息接受1:"/>            <TextView                android:id="@+id/mesg1"                android:layout_width="match_parent"                android:layout_height="0dp"                android:layout_weight="1"/>        </LinearLayout>        <LinearLayout            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:layout_margin="2dp"            android:background="#ffffff"            android:orientation="vertical"            >            <TextView                android:layout_width="match_parent"                android:layout_height="30dp"                android:gravity="center_vertical"                android:text="消息接受2:"/>            <TextView                android:id="@+id/mesg2"                android:layout_width="match_parent"                android:layout_height="0dp"                android:layout_weight="1"/>        </LinearLayout>    </LinearLayout>    <Button        android:id="@+id/msg_send"        android:layout_width="match_parent"        android:layout_height="40dp"        android:layout_marginTop="5dp"        android:text="发送"/></LinearLayout>
布局效果:


五、编辑主逻辑

package tusirui.androideventbus;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;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 tusirui.androideventbus.Eb.Econtrl;import tusirui.androideventbus.Eb.MyMessage;public class MainActivity extends AppCompatActivity implements View.OnClickListener{    /**     * 消息接受1:     */    private TextView mMesg1;    /**     * 消息接受1:     */    private TextView mMesg2;    /**     * 发送     */    private Button mMsgSend;    private int counter = 0;    @Override    protected void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        EventBus.getDefault().register(this);//订阅        initView();    }    @Override    protected void onDestroy()    {        EventBus.getDefault().unregister(this);//解除订阅        super.onDestroy();    }    private void initView()    {        mMesg1 = (TextView) findViewById(R.id.mesg1);        mMesg2 = (TextView) findViewById(R.id.mesg2);        mMsgSend = (Button) findViewById(R.id.msg_send);        mMsgSend.setOnClickListener(this);        Econtrl econtrl = new Econtrl(mMesg2);    }    @Override    public void onClick(View v)    {        switch (v.getId())        {            case R.id.msg_send:                new Thread(new Runnable()                {                    @Override                    public void run()                    {                        MyMessage myMessage = new MyMessage();                        myMessage.setMsg("发送:" + (counter++));                        EventBus.getDefault().post(myMessage);                    }                }).start();                break;        }    }    @Subscribe(threadMode = ThreadMode.ASYNC)    public void onEventBusMsg(MyMessage msg)    {        try        {            Thread.sleep(1000);        } catch (InterruptedException e)        {            e.printStackTrace();        }        EventBus.getDefault().post("消息线程转发:" + msg.getMsg());    }    @Subscribe(threadMode = ThreadMode.MAIN)    public void copyMsg(String string)    {//说明消息不一定需要封装,它是支持常用数据类型的。        mMesg1.setText(mMesg1.getText() + "\n" + string);    }}
最终效果:




原创粉丝点击