android - 在调用 onDestroy() 之后重用 Fragment 是否安全?

标签 android android-fragments android-support-library

我正在使用带有 Android 支持库 v7 的 Fragment 类。在我的 ActivityonCreate() 方法中,我创建了一堆 fragment 并将它们存储到我的 Activity 的属性中。

this.firstFragment = new FirstFragment();
this.secondFragment = new SecondFragment();
// and so on

我使用抽屉导航模式在我的应用程序的 fragment 之间切换。要更改 Activity fragment ,我使用以下代码。

// Replace the current content of the fragment holder with the selected section fragment.
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.container, selectedFragment).commit();

这会调用已删除 fragment 的 onDestroy()。在 onDestroy() 被调用后重用该 fragment 是否安全,或者我是否应该在每次向用户显示该 fragment 时重新创建该 fragment 。

这是一个时间与内存消耗的问题,因为至少有一个 fragment 需要一些时间才能创建。

最佳答案

onDestroy 功能是销毁所有使用的变量和消耗的内存。所有这些都将被标记为虚拟数据,以便垃圾收集器能够在需要时将它们从内存中删除。

在调用onDestroy后再次调用Fragment会再次从头开始通过onCreate和所有变量 和本地 object 将再次重新初始化。

安全吗?是的,安全。

您正在考虑更深入地处理 lifeCycle Fragment 已经被操作系统处理。

如果您想防止Fragment 被破坏,您可以将其创建为static 对象。

关于android - 在调用 onDestroy() 之后重用 Fragment 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22072289/

相关文章:

android - 如何为 RecyclerView 的较新版本正确添加快速滚动器?

android - 如何在做事时实现进度条?

android - "ERROR: OpenGLES initialization failed!"在 CentOS 与 android SDK

android - 如何为安卓开发软键盘?

java - 如何从ListFragment发送数据到Fragment

android - 支持库中的 RecyclerView 在哪里?

android - 如何使用android :usesCleartextTraffic below Marshmallow (API-23)

android - 未调用子 fragment 的 setUserVisibleHint 和 onResume

android - fragment - 您是否必须在包含整个 Activity 的 fragment 周围使用 Activity Wrapper?

android - BottomSheetDialogFragment 为深色主题设置了错误的背景颜色