【发布时间】:2016-05-22 15:20:45
【问题描述】:
好吧,我认为它应该很简单
fragmentManager.beginTransaction().replace(R.id.container, otherFragment).commit();
应该这样做,但事实并非如此。
即使fragmentManager.beginTransaction().remove(fragment); 也不会杀死它。
其他片段加载,但在我试图杀死的片段中,有一个 SensorEventListener 即使在片段被替换后也会继续做出反应。我能听到声音和东西。
当然,我可以制作一个布尔值并切换它,但在我看来应该有另一种方法来简单地销毁这个对象。
这就是我初始化片段的方式:
public static BaseGameFragment newInstance(int mode) {
BaseGameFragment.mode = mode;
BaseGameFragment fragment = new BaseGameFragment();
return fragment;
}
我也尝试调用onDestroy();,但它不会停止传感器的反应,因此也不会停止片段内的所有其他进程。
【问题讨论】:
-
请显示minimal reproducible example,尤其是SensorEventListener。
-
不确定是否可以,尝试在
Activity中调用一个方法,在onDetach中对Fragment进行清理。 -
@jaibatrik 但我该如何进行清理?我的意思是,我可以手动使 sensorListener = null 和其他人,但我仍然会在内存中有片段。我认为它在更换时被破坏。但是好像没有
-
@user2976267 试试这个答案....stackoverflow.com/a/6198068/3678308
-
您是否在删除片段之前取消注册传感器事件侦听器?