当前位置: 首页 > 知识库问答 >
问题:

碎片事务、框架容器、释放碎片和内存管理

姬欣怡
2023-03-14

我有一个用于交换片段的框架布局。我使用导航抽屉,每个菜单项都会打开一个片段。所以可以肯定的是,在所有应用程序周期中,屏幕上同时只有一个片段(因此只有一个活动)。下面您可以找到我的片段开始方法

 public void startFragment(Fragment f)
{
    FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
    transaction.replace(R.id.fragment_container, f);
    transaction.commit();


}

所以当我在androidstudio上检查时,每次我用上述方法替换fragment时,内存使用量都会增加<代码>碎片事务。删除不会释放碎片,而替换也不会释放碎片。所以,过了一段时间,如果我点击每一个菜单项,一次又一次地打开片段,内存使用就会大大增加。

所以我的问题是如何释放旧的替换碎片?我只想要一个在记忆中。或者我们可以说;我想摧毁他们

共有1个答案

鄢博简
2023-03-14

在活动结束之前,对其片段的所有引用都将存在于内存中。不管在片段管理器级别/backstack上发生的添加/删除操作。

看看Martín Marconcini的堆栈溢出回答。

如果frgaments存在于后堆栈中,则可以隐藏和显示它们。看看这张照片。

 类似资料:
  • 一、简介 碎片是什么?把一个完整的页面理解成由许多块组成,而每一个“块”我们就可认为就是一个”碎片“! 这样,我们在页面放置一些碎片,在以后的维护维护中,只需要对碎片进行维护! 碎片功能支持完全手动更新,并且可以搜索内容,可恢复数据至任何历史版本,常用于专题制作和首页频繁更新的内容。 您可以在模板中直接插入 {pc:block pos="index_block_1"}{/pc} 格式的碎片标签,然

  • 我可以使用一个片段作为一个活动吗?我已经创建了一个片段,但我希望它有像活动一样的功能,所以我使用片段扩展碎片活动。然而,我有一个带有碎片的导航抽屉。当我更改为“扩展碎片活动”时,我的代码有问题?请给我指路。

  • 由于不推荐使用TabActivity,我需要找到一种方法来使用片段。在我知道它如何工作之前,我已经使用了碎片,但我需要一个指南来创建我的标签主机与碎片活动。我在互联网上找到了几个例子,它们都是关于将片段放入标签的容器中的。

  • 主要内容:分配内存空间,回收算法,总结前边介绍的有关动态内存管理的方法,无论是边界标识法还是伙伴系统,但是以将空闲的存储空间链接成一个 链表,即可利用空间表,对存储空间进行分配和回收。 本节介绍另外一种动态内存管理的方法,使用这种方式在整个内存管理过程中,不管哪个时间段,所有未被占用的空间都是地址连续的存储区。 这些地址连续的未被占用的存储区在编译程序中称为堆。 图 1 存储区状态 假设存储区的初始状态如图 1 所示,若采用本节介绍的

  • 本文向大家介绍ANTLR 碎片,包括了ANTLR 碎片的使用技巧和注意事项,需要的朋友参考一下 示例 片段是lexer规则的可重用部分,它们本身无法匹配-需要从lexer规则中引用它们。            

  • 本文向大家介绍内部碎片与外部碎片之间的区别,包括了内部碎片与外部碎片之间的区别的使用技巧和注意事项,需要的朋友参考一下 在从内存中加载和删除进程时,可用内存空间会分成几小块。考虑到有时由于无法将进程分配给存储块而导致其无法使用,因此有时无法将其分配给存储块。此问题称为碎片。 内部碎片 分配给进程的内存块更大。内存的某些部分未使用,因为它不能被其他进程使用。通过有效分配最小的分区但足够大的分区,可以