我正在使用otto来通信服务和地图片段。在服务中,位置提供者获取发送到映射片段的位置数据。它工作得很好,但是我不能用ViewPager来管理otto的寄存器和注销方法。这个问题既没有提到奥托问题,也没有提到ViewPager问题。
如前所述,当服务接收到位置数据时,它将发送到map片段。为此,我必须在它们的特定生命周期事件中注册/取消注册片段和服务。此时,我正面临着ViewPager本质上的一个问题。默认情况下,ViewPager首先加载Home和Map片段,如下所示

结果,
因此,这种行为使我无法管理otto方法。--即使选择了家庭或设置片段,映射片段也将是活动的,并从服务接收位置数据。我不想要这个。
我在github和这里搜索了otto与ViewPager的用法,但是没有任何问题或例子。在搜索了一下ViewPager之后,我发现一些人建议ViewPager.setOffscreenPageLimit(0)。But it does not work
那么,使用ViewPager和otto的正确方式是什么呢?
发布于 2015-08-17 21:20:45
如果您只想在MapFragment中看到事件时才接收它,那么您可以这样做:
public class MapFragment extends Fragment
@Override
public void setMenuVisibility(final boolean visible) {
super.setMenuVisibility(visible);
if (visible) {
// register here
} else {
//unregister here
}
}https://stackoverflow.com/questions/32059742
复制相似问题