我正在动态添加和删除某些片段。我的问题是,如果我删除一个片段,例如:
getSupportFragmentManager().beginTransaction().remove(myFragment).commit();
如何确保 Android 确实从内存中删除了这个片段及其所有资源(尤其是图像)?因为对我来说,即使片段本身从布局中删除,它也会保留在内存中,直到其父活动完成。
我正在动态添加和删除某些片段。我的问题是,如果我删除一个片段,例如:
getSupportFragmentManager().beginTransaction().remove(myFragment).commit();
如何确保 Android 确实从内存中删除了这个片段及其所有资源(尤其是图像)?因为对我来说,即使片段本身从布局中删除,它也会保留在内存中,直到其父活动完成。
测试是否有任何 java 对象被回收,您可以做的一件事是覆盖 finalize 方法(请参阅接受的android 垃圾收集器的答案,释放对象内的对象 )
这可能是什么样子:在您的片段类(或任何其他感兴趣的类)中
@Override
protected void finalize() throws Throwable {
Log.i("Fragment Recycled",this.toString());
super.finalize();
}
对任何其他感兴趣的对象也可以这样做。一旦 finalize 方法被覆盖,您可以查看日志 cat 以查看 Fragment 是否确实被回收。我希望这有帮助。