Otto的使用

Otto是一个用来进行组件之间通信的框架

GitHub地址
使用方式


Otto主要概念就是发布事件和接收事件,如果要接收事件时,在方法前加一个注解@Subscribe,方法名可以自定义。下面用一个例子来说明,通过MainActivity打开一个OtherActivity,然后OtherActivity发送数据到MainActivity。


Otto通过bus这个类进行事件的发送,要收事件的类必须进行注册,发送事件的类可以注册也可以不注册。
首先把Bus做成一个单例:

public class BusManager {
    private static Bus mBus;
    public static Bus getInstance(){
        if (mBus == null) {
            mBus=new Bus();
        }
        return mBus;
    }

}

这是MainActivity的代码,主要是注册和接收事件:

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        BusManager.getInstance().register(this);
    }


    @Subscribe
    public void receive(String s) {
        Log.d("alan", "收到事件");
        Log.d("alan", "s--->" + s);

    }

    public void click(View v) {
        startActivity(new Intent(this, OtherActivity.class));
    }

    @Override
    protected void onDestroy() {
        BusManager.getInstance().unregister(this);
        super.onDestroy();
    }
}

在OtherActivity里点击按钮后就发送事件:

public class OtherActivity extends AppCompatActivity {

    private Bus bus;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.other_layout);
        bus = BusManager.getInstance();

    }
    //点击按钮
    public void btn(View v){

        bus.post("a string");
    }
}

otto主要通过订阅者的接收参数来选择发送事件,如果两个订阅者的参数一样,那么这两个订阅者都会接收到事件,所以,在写订阅者方法的参数的时候,最好再包一层。


Otto就类似Android中的接口,只是写起来更方便了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容