fragment复用至EventBus多次调用

来源:互联网 发布:大数据 包嗅探器 编辑:程序博客网 时间:2024/06/06 00:57

项目是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) {           //......        }    }
原创粉丝点击