Java 回收Android上膨胀的视图

Java 回收Android上膨胀的视图,java,android,android-layout,android-fragments,Java,Android,Android Layout,Android Fragments,我有一个片段的复杂视图组,它是不时创建的。 一次只能显示一个实例片段 我想知道是否有可能以某种方式存储膨胀的视图,并在再次创建片段时重用它 显然,视图属性必须更改,但至少视图不需要再次膨胀 我试图简单地将视图元素存储为静态元素,然后检查它是否存在,如果存在,则使用它 但是,我相信View元素有一些特定于片段的属性,如果您将它与具有不同引用id的片段一起使用,它将失败-嗯..它失败了 是否有人试图缓存膨胀的视图并重用它们?跨不同片段重用视图似乎非常危险(尽管在同一片段中重用视图是安全的) 如果上下

我有一个片段的复杂视图组,它是不时创建的。 一次只能显示一个实例片段

我想知道是否有可能以某种方式存储膨胀的视图,并在再次创建片段时重用它

显然,视图属性必须更改,但至少视图不需要再次膨胀

我试图简单地将视图元素存储为静态元素,然后检查它是否存在,如果存在,则使用它

但是,我相信View元素有一些特定于片段的属性,如果您将它与具有不同引用id的片段一起使用,它将失败-嗯..它失败了


是否有人试图缓存膨胀的视图并重用它们?

跨不同片段重用视图似乎非常危险(尽管在同一片段中重用视图是安全的)

如果上下文发生更改(例如,如果重新创建了活动),该怎么办?我猜您必须希望没有视图调用
getContext()
,并尝试使用活动上下文,因为它将无效并可能导致意外结果


您可以做的是确保优化布局(如尽可能避免嵌套权重和
RelativeLayouts
),或使用自定义视图简化布局。

那么是否可以重复使用片段?当我调用popBack时,它会弹出到缓存中,然后当我调用它时,它会使用缓存中的片段?那也会包含预膨胀的视图,不是吗?我不这么认为。即使使用
setRetainInstance(true)
它仍然需要重新创建布局。视图绑定到活动上下文,您对此无能为力,如果重新创建活动,则需要再次膨胀视图。这是Android提供的多任务处理的价格。自定义视图比内置视图快得多,你试过了吗?