项目是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) {
//......
}
}