EventBus使用简介

了解什么是EventBus?

  • EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCas在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。
  • EventBus是一个用于简化Andorid、Fragment、Threads、Service之间信息传递的一个发布/订阅事件集。
  • 什么是EventBus?区别在哪里?
    EventBus是一个消息总线,以观察者模式实现,用于简化程序的组件、线程通信,
    可以轻易切换线程、开辟线程。EventBus3.0跟先前版本的区别在于加入了annotation @Subscribe,取代了以前约定命名的方式。
  • 利弊——-好处?
    简单,方便,小巧,文档清晰,性能消耗少,可定制行强,耦合度低。 简化组件之间的通信方式让业务代码更加简洁(但是需要配合相应注解进行使用),可以指定事件处理方法的执行线程,和订阅者的优先级(跟广播类似), 足够的稳定,已经被很多Android应用使用,你绝对不是第一个吃螃蟹的人。

    下面我们一起来对EventBus的使用吧

首先引入依赖EventBus的jar包

  • compile ‘org.greenrobot:eventbus:3.0.0’

在activity_main里面写:

    <Button
        android:id="@+id/btn_try"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="btn_bty"/>
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

第一步:

public class MainActivity extends AppCompatActivity {

    private Button but;
    private TextView tv;

    /**
     * 在OnCreate()函数中注册EventBus,在OnDestroy()函数中反注册。所以整体的注册与反注册的代码如下:
     * @param savedInstanceState
     */

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //第二步接收消息页面注册

        setContentView(R.layout.activity_main);
        EventBus.getDefault().register(this);


        but = (Button) findViewById(R.id.btn_try);
        tv = (TextView) findViewById(R.id.tv);
        but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it=new Intent(getApplicationContext(),SecondActivity.class);
                startActivity(it);
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //反注册
        EventBus.getDefault().unregister(this);
    }
    //第五步
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onEventMainThread(FirstEvent event){
        String msg="接收到了消息:"+event.getmMSg();
        Log.d("harvic",msg);
        tv.setText(msg);
        Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();

    }
}

定义事件

public class FirstEvent {
    private String mMSg;
    public  FirstEvent(String msg){
        mMSg=msg;
    }
    public  String getmMSg(){
        return mMSg;
    }
}

在AndroidManifest.xml声明这个类的使用

public class SecondActivity extends AppCompatActivity {

    private Button butsecond;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        butsecond = (Button) findViewById(R.id.btn_first_event);
        butsecond.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //第三步发送消息
                EventBus.getDefault().post(new FirstEvent("aaaaaaaaaaaaaaaaaaaaa"));
            }
        });

    }
}

就是这们简单,ok.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值