EventBus简介

EventBus是Android和Java的发布/订阅事件总线。
在这里插入图片描述

EventBus …

简化了组件之间的通信
将事件发送者和接收者分离
在活动,片段和后台线程中表现良好
避免复杂且容易出错的依赖关系和生命周期问题
使您的代码更简单
很快
很小(约50k罐)
已经通过100,000,000+安装的应用程序在实践中得到证实
具有交付线程,用户优先级等高级功能。

EventBus分三个步骤

1.定义事件:

public  static  class  MessageEvent { / *如果需要,还有其他字段* / }

2.准备订阅者:声明并注释您的订阅方法,可选择指定一个线程模式:

@Subscribe(threadMode  =  ThreadMode 。 MAIN)  
 公共 无效 onMessageEvent(MessageEvent的事件){ / *做一些事情* / };

注册和注销您的订阅者。例如,在Android上,活动和片段通常应根据其生命周期进行注册:

 @Override 
 public  void onStart(){
      super 。调用onStart();
     EventBus 。getDefault()。注册(这);
 }

 @Override 
 public  void onStop(){
      super 。的onStop();
     EventBus 。getDefault()。取消注册(这个);
 }

3.发布活动:

 EventBus 。getDefault()。post(new  MessageEvent());

将EventBus添加到您的项目中

通过Gradle:

实施 implementation ‘org.greenrobot:eventbus:3.1.1’

通过Maven:

< 依赖 >
   < groupId > org.greenrobot </ groupId >
   < artifactId > eventbus </ artifactId >
   < version > 3.1.1 </ version >
</ dependency >

或者从Maven Central 下载最新的JAR。

Fragment中实现

package com.example.lessson0807one.fragment;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.lessson0807one.Mymessage;
import com.example.lessson0807one.R;

import org.greenrobot.eventbus.EventBus;

/**
 * A simple {@link Fragment} subclass.
 */
public class EventBusFragment extends Fragment {


    public EventBusFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View inflate = inflater.inflate(R.layout.fragment_event_bus, container, false);

        TextView textView = inflate.findViewById(R.id.ccccc);

        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Mymessage mymessage = new Mymessage("揪");
                EventBus.getDefault().post(mymessage);


            }
        });

        return inflate;
    }

}

Activity中实现

package com.example.lessson0807one.activity;

import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import com.example.lessson0807one.Mymessage;
import com.example.lessson0807one.R;
import com.example.lessson0807one.fragment.EventBusFragment;

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;

public class EventBusActivity extends AppCompatActivity {

    private static final String TAG = "EventBusActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_event_bus);

        FragmentManager supportFragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.asjdklas,new EventBusFragment());
        fragmentTransaction.commit();

        EventBus.getDefault().register(this);
    }

    @Subscribe
    public void messagesa(Mymessage s){
        Log.i(TAG, "Message: "+s.toString());
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        EventBus.getDefault().unregister(this);
    }
}

https://github.com/greenrobot/EventBus

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值