每次需要时存储对布局元素的引用而不是 findViewById 会“更便宜”,但它不会阻止垃圾收集吗?我的假设是在 onStop 状态视图被破坏,至少 onSaveInstanceState 被调用。因此,在活动或片段中引用 UI 元素会阻止该元素被收集 - 对吗?
我错了还是应该坚持 findViewById 或尝试 weakreferences ?
谢谢。
每次需要时存储对布局元素的引用而不是 findViewById 会“更便宜”,但它不会阻止垃圾收集吗?我的假设是在 onStop 状态视图被破坏,至少 onSaveInstanceState 被调用。因此,在活动或片段中引用 UI 元素会阻止该元素被收集 - 对吗?
我错了还是应该坚持 findViewById 或尝试 weakreferences ?
谢谢。
如果要多次访问,我首选的方法是将视图引用存储在活动中。
我认为到处调用 findViewById 会使代码变得丑陋。
我不相信存储视图引用会影响 gc,因为您可以使用 Activity 访问所有 ui 元素,它们的引用已经被持有。
答案是:这取决于,
如果您要重复引用 UI,保存引用会更便宜。不是,那么您可以只使用 findViewById 几次。在正常情况下的大多数应用程序中,无论哪种方式都不会对性能产生太大影响,因为这些任务不是非常系统密集型的。所以我的最终答案是,在你的工作流程中做任何对你来说最舒服的事情,因为性能增益/损失几乎可以忽略不计(除非你这样做很多次)。