fragment复用至EventBus多次调用

项目是mvp模式开发的,中间有一个tablayout,每个标签都是fragment复用,通过model请求不同数据展示,发现一个问题,多次滑动之后,每个fragment最后都显示同一个内容,看起来好像fragment复用有问题,每次取得是同一个fragment。debug之后发现请求没问题,确实是请求的不同数据。
一开始觉得是复用单例写的有问题,怎么改都不行。后来发现是EventBus的问题。

 /**
     * 事件响应方法
     * 接收消息
     *
     * @param event
     */
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onEvent(AdapterEvent event) {
       //......
    }

eventbus是通过不同的自定义Event类去接受消息的,而因为fragment是复用的,所以在每个fragment里都注册了消息接受EventBus.getDefault().register(this);所以每个fragment单例都会收到订阅的消息,最后的结果就是,每个fragment都会被刷新。
问题发现了就好处理了,加个标签标识不同fragment就行

 /**
     * 事件响应方法
     * 接收消息
     *
     * @param event
     */
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onEvent(AdapterEvent event) {
        if (event.getWhich() == which) {
           //......
        }
    }

你可能感兴趣的:(Android)