Android多媒体开发与应用(三):常用框架

第一章、OTTO事件总线

Otto是一个在Android中的事件总线框架,它是square的一个开源框架,针对事件提供统一订阅、发布以达到组件间通信的解决方案。

OTTO优势及使用场景。

Android 从4.0开始引入Fragment,主要是为了解决屏幕碎片化的问题。Fragment之间以及Fragment和Activity的通信通过interface实现,过多的interface会使程序变得复杂、耦合度增大。OTTO就是为了解决这个问题而出现的。

OTTO的主要方法介绍

主要的方法:
• register(Object o):注册,注册以后可以订阅事件
• unregister(Object o)注销,放弃对之前的订阅的所有事件
• post(Object o)发布事件,会被有Subscribe注解的方法获取到

注解:
• @Subscribe:
- 调用了register后有效
- 表示订阅了一个事件,并且方法用 public 修饰的
- 方法名可以随意取,重点是参数
• @Produce:
- 通知Bus该函数是一个事件产生者,产生的事件类型为该函数的返回值。

OTTO的使用

1、导入Jar包:在http://square.github.io/otto/下载最新的jar包,放入module的libs目录中,右键Add as libarary。

或者在build.gradle的dependencies中加入下面代码:

implementation 'com.squareup:otto:+'

2、实例化Bus类,最好单例模式。

public class BusProvider {
    private static final Bus BUS=new Bus();
    public static Bus getInstance(){
        return BUS;
    }
    private BusProvider(){}
}

3、在Activity或Fragment中注册代码

onCreate中:BusProvider.getInstance().register(this);

onDestory中:BusProvider.getInstance().unregister(this);

4、创建一个类,在发送端使用post发送这个类的实例

public class MyEvent {
    public static final int EVENT_FROM_UP = 1;
    public static final int EVENT_FROM_DOWN = 2;
    private int event;
    private String msg;

    public MyEvent(int event,String msg) {
        this.event = event;
        this.msg=msg;
    }

    public int getEvent() {
        return event;
    }

    public String getMsg() {
        return msg;
    }
}

5、接收端使用@Subsribe注解创建方法

    @Subscribe
    public void onMyEvent(MyEvent event){
        Log.d("####", "onActivityEvent: "+event.getEvent()+","+event.getMsg());
    }

 

你可能感兴趣的:(Android)