Android 当从backback调用片段时会发生什么?

Android 当从backback调用片段时会发生什么?,android,android-fragments,Android,Android Fragments,我有一个容器片段。我在其中加载片段。当我想加载一个新片段时,我使用以下代码 FragmentTransaction ft=activity.getSupportFragmentManager().beginTransaction(); ft.add(R.id.mainframe,new_fragment_here).hide(getCurrentFragment()).addToBackStack(null).commit(); 我要问的是,当我隐藏一个

我有一个容器片段。我在其中加载片段。当我想加载一个新片段时,我使用以下代码

FragmentTransaction ft=activity.getSupportFragmentManager().beginTransaction();
                    ft.add(R.id.mainframe,new_fragment_here).hide(getCurrentFragment()).addToBackStack(null).commit();
我要问的是,当我隐藏一个片段时,当内存不足时,垃圾收集器是否可以删除它

当我想回到旧片段时,我只需使用getFragmentManager.popBackStack

当我使用此代码时,我的片段及其图像或视频是否永久性地被销毁

这种使用是否会导致内存不足错误


我不得不说,我的片段几乎都是用glide显示web上的图像。有些片段只显示一个图像,而其他片段显示的图像比使用recyclerview显示的图像要多。

我相信你想问的是片段的生命周期,以及GC如何为后堆栈中的片段工作

根据我的观察和知识,当你将一个片段添加到backbackback时,片段就在设备的RAM中,但如果有许多taskFragment 那么GC可能会根据需要对片段进行强制销毁

为了更好地理解片段生命周期以及Backstack中的片段发生了什么,请参考此流程图

这个图可能有点复杂,但它将帮助您理解片段是如何工作的

注意:当您弹出/替换一个片段时,片段本身就会被销毁,您可以通过在片段的onDestroy保留一个断点来检查它


如果图像不可用,请参考

谢谢您的回答。当碎片被销毁时,还有一件事,其中的所有内容也会被销毁,对吗?例如,如果和图像视图加载了一个图像,那么该图像也会被销毁,或者一个包含所有图像和数据的recyclerview也会被碎片销毁,对吗?Hai u说,如果你正在缓存图像,那么再次加载图像不会花费时间,所以你不必担心,答案是肯定的,所有内容都已给出GC所以它不在内存中,我没有要求恢复保存的状态。我要问的是,当我用popbackstack方法销毁一个片段时,其中的所有内容是否也会用fragment销毁?例如,ı有一个片段,它有一个recyclerview。在recycler视图中,所有图像和其他检索到的数据也会被片段覆盖?是的,它会被销毁。