Android--Otto事件总线 -- 组件之间通讯框架使用 --模式解析

时间:2023-03-08 22:15:23
Android--Otto事件总线 -- 组件之间通讯框架使用 --模式解析

前言:Otto事件总线 -- 组件之间通讯框架

对于之前的情况activity之间或者fragment之间等跳转传值一般都是用bundle、intent等,从activityA --- activityB用startActivity,用startActivityForResult()可以接受后者回到前者的参数并且可做一些更新UI等操作。这样一来就要判断从A中哪一个按钮跳转到了B,就要设置唯一标识定义什么FRIST=1,FFFFF=2等。Otto事件总线解决了这个问题,只要在订阅事件,接收方接受订阅,传值类型为唯一标示。这样子只要在触发了post后,接受方就会执行指定方法,就算不返回到A界面也是可以执行的。

使用Otto事件总线框架的原因

  1. 一般情况下,在Android中的Activity与Activity之间值的传递,我们通过Intent的方式;
  2. Activity与Fragment之间我们通过setArguments,值回调我们是在Fragment中的onAttach()接口方式实现;
  3. Activity与service之间,我们通常会使用binder机制,但是binder机制实际上使用的也是接口回调的方式;
  4. 在一些比较复杂的情况,比如Activity嵌套多个Fragment页面的时候,如果一个页面的值发生了改变,其他的页面也要跟着发生数据的更新操作,这样我们会频繁的使用接口回调的方式,这种方式的耦合性太高。

Otto事件的模式

对于一个如此方便的框架,Java模式的加入是必不可少的,无论是Rxjava(观察者模式扩展)还是EventBus都有观察者模式,所以中间讲解该模式。

一、简单使用

  • @Subscribe:这个在调用了register后有效,表示订阅了一个事件,并且方法的用 public 修饰的.方法名可以随意取,重点是参数,它是根据你的参数进行判断
  • @Produce注解告诉Bus该函数是一个事件产生者,产生的事件类型为该函数的返回值。

1-1:添加依赖

dependencies {
compile 'com.squareup:otto:1.3.8'
}
或者
//otto事件总线
compile 'com.squareup:otto:+'

1-2:订阅和取消订阅

bus.register(this);
bus.unregister(this);
发布:
bus.post(new MessageEvent());
注解
@Subscribe:这个在调用了register后有效,表示订阅了一个事件,并且方法的用 public 修饰的.方法名可以随意取,重点是参数,它是根据你的参数进行判断 @Produce注解告诉Bus该函数是一个事件产生者,产生的事件类型为该函数的返回值。 最后,proguard 需要做一些额外处理,防止混淆:
-keepattributes *Annotation*
-keepclassmembers class ** {
@com.squareup.otto.Subscribe public *;
@com.squareup.otto.Produce public *;
}

1-3:otto推荐使用单例模式,保证只有一个实例

public class BusProvider extends Bus {

    /**
* 通过单例模式返回唯一的bus对象,而且重写父类的post方法,通过handler实现任意线程可以调用
*/
private Handler mHandler = new Handler(Looper.getMainLooper());
private static Bus bus = new BusProvider(); private BusProvider(){ } public static Bus getInstance(){ return bus;
} @Override
public void post(final Object event) {
if (Looper.myLooper() == Looper.getMainLooper()) {
super.post(event);
}else {
mHandler.post(new Runnable() {
@Override
public void run() {
BusProvider.super.post(event);
}
});
}
}
}

1-4:调用 A-->B

@Subscribe

activityA:

/**
* Created by 刘志通 on 2018/7/4.
*/ public class OttoTestOne extends AppCompatActivity {
private Bus bus;
private Button button,button2;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ottotwo_layout);
//订阅
bus = BusProvider.getInstance();
bus.register(this);
button = findViewById(R.id.id_two);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(OttoTestOne.this,OttoTestTwo.class);
startActivity(intent);
}
}); }
//注解接收String类型
@Subscribe
public void setText(String textstring) {
button.setText(textstring);
Log.e("检测1",textstring+"");
}
//接收bean类型
@Subscribe
public void setText2(EditBean textstring) {
button2.setText(textstring.getEdit1()+""+textstring.getEdit2());
Log.e("检测2", textstring.getEdit1()+""+textstring.getEdit2());
} /**
* 取消订阅
* */
@Override
protected void onDestroy() {
BusProvider.getInstance().unregister(this);
super.onDestroy();
}
}

activityB

/**
* Created by 刘志通 on 2018/7/4.
*/ public class OttoTestTwo extends AppCompatActivity { private Bus bus; @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//获取实例
bus = BusProvider.getInstance();
//注册
bus.register(this);
setContentView(R.layout.ottoone_layout);
Button button=findViewById(R.id.id_btn); button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*发送,这里发送的是bean,也可以直接发送String类型的数据,接收则是A中String类型的接收。*/
EditBean editBean=new EditBean();
editBean.setEdit1("ni");
editBean.setEdit2(" hao");
editBean.setTotal(" ma");
bus.post(editBean);
}
});
}
}

@Produce

只要有activity或者fragment跳转到该页面后,事件就会自动产生,然后在订阅处(谁订阅谁改变)更新一些数据。

       //获取实例
bus = BusProvider.getInstance();
//注册
bus.register(this);
setContentView(R.layout.ottothird_layout);
}
@Produce
public EditBean providerEvent(){
EditBean eventData = new EditBean();
eventData.setEdit1("hello world");
return eventData;
} @Override
protected void onDestroy() {
super.onDestroy();
bus.unregister(this);
}

注:A->B中 @Produce模式则是在A中发起事件,也就是所谓的事件产生者,当从A跳转到B后,如果B中有对EditBean有操作的话,就直接触及到A的@Produce方法,并更新一些数据,这和Post比起来,有点简单,因为你都不用再做任何操作,前一个界面就已经更新了,但Post可以控制何时发起事件,点击按钮后或者网络请求成功后直接bus.post(" ... ");

二、观察者模式

前言

观察者模式(有时又被称为模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。

需要注意:

实现观察者模式的时候要注意,观察者和被观察对象之间的互动关系不能体现成类之间的直接调用,否则就将使观察者和被观察对象之间紧密的耦合起来,从根本上违反面向对象的设计的原则。无论是观察者“观察”观察对象,还是被观察者将自己的改变“通知”观察者,都不应该直接调用。

观察者

(Observer)将自己注册到被观察对象(Subject)中,被观察对象将观察者存放在一个容器(Container)里。

被观察

被观察对象发生了某种变化,从容器中得到所有注册过的观察者,将变化通知观察者。

撤销观察

观察者告诉被观察者要撤销观察,被观察者从容器中将观察者去除。

观察者将自己注册到被观察者的容器中时,被观察者不应该过问观察者的具体类型,而是应该使用观察者的接口。这样的优点是:假定程序中还有别的观察者,那么只要这个观察者也是相同的接口实现即可。一个被观察者可以对应多个观察者,当被观察者发生变化的时候,他可以将消息一一通知给所有的观察者。基于接口,而不是具体的实现——这一点为程序提供了更大的灵活性。

aaarticlea/jpeg;base64,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" alt="image" data-src="https%3A%2F%2Fnote.youdao.com%2Fyws%2Fpublic%2Fresource%2Ffd36036c9f62a9f98e514c2a9937b2ed%2Fxmlnote%2F404377B1E1F44ED193DF60215A195310%2F2781" data-processed="https%3A%2F%2Fnote.youdao.com%2Fyws%2Fpublic%2Fresource%2Ffd36036c9f62a9f98e514c2a9937b2ed%2Fxmlnote%2F404377B1E1F44ED193DF60215A195310%2F2781" />

举例子:

这里创建一个抽象观察者(Observer)和一个被观察者(Subject),然后继承抽象观察者,观察者们通过观察被观察者(Subject)来改变自己。

创建类:

  • 抽象观察者(Observer)
  • 被观察者(Subject)

2-1:被观察者Subject.java

public class Subject {
private List<Observer> observers
= new ArrayList<Observer>();
private Observer observer;
private int state;
//变更情况
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
//绑定
public void binding(Observer observer) {
observers.add(observer);
}
/**
* unbinding(注销观察者,有时候在未获取到实例使用)
**/
public void unbinding(Observer cls) {
if (cls == null) throw new NullPointerException();
observers.remove(cls); }
//通知
public void notifyAllObservers() {
for (Observer observer : observers) {
observer.update();
}
}
}

这里需要注意的是如果是常规集合是不能直接用remove的,要如下转换再行删除。

  Iterator<Observer> iterator = observers.iterator();

2-2:观察者(Observer)

/**
* 观察者
* */
public abstract class Observer {
protected Subject subject;
public abstract void update();
}

2-3:继承Observer

需要注意的是,我这里创建了3个如下类,只粘贴出一个,分别是FirstObserver,SecondObserver,ThirdObserver。

public class FirstObserver extends Observer {
public FirstObserver(Subject subject) {
this.subject = subject;
subject.binding(this);//绑定
}
@Override
public void update() {
//用来更新数据
System.out.println("我是第一个观察者:"+subject.getState());
}
}

2-4:测试

在主方法main中 这里是在每个子类的构造方法中加入了绑定,所以,只要创建对象就已经绑定了,无序再次绑定,当然也是可以解绑的。

 //加载被观察者
Subject subject = new Subject();
//加载观察者
FirstObserver firstObserver = new FirstObserver(subject);
SecondObserver secondObserver = new SecondObserver(subject);
ThirdObserver thirdObserver = new ThirdObserver(subject);
subject.setState(2);
subject.notifyAllObservers();

aaarticlea/jpeg;base64,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*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" alt="image" data-src="https%3A%2F%2Fnote.youdao.com%2Fyws%2Fpublic%2Fresource%2Ffd36036c9f62a9f98e514c2a9937b2ed%2Fxmlnote%2F4CD8B50942EB4FFBBB359374A7BBD159%2F2782" data-processed="https%3A%2F%2Fnote.youdao.com%2Fyws%2Fpublic%2Fresource%2Ffd36036c9f62a9f98e514c2a9937b2ed%2Fxmlnote%2F4CD8B50942EB4FFBBB359374A7BBD159%2F2782" />

解绑

subject.unbinding(secondObserver);
subject.setState(3);
subject.notifyAllObservers();

aaarticlea/jpeg;base64,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*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" alt="image" data-src="https%3A%2F%2Fnote.youdao.com%2Fyws%2Fpublic%2Fresource%2Ffd36036c9f62a9f98e514c2a9937b2ed%2Fxmlnote%2F93B1BAEAE26B4C5BBC7AD998C6097A2F%2F2780" data-processed="https%3A%2F%2Fnote.youdao.com%2Fyws%2Fpublic%2Fresource%2Ffd36036c9f62a9f98e514c2a9937b2ed%2Fxmlnote%2F93B1BAEAE26B4C5BBC7AD998C6097A2F%2F2780" />