gpt4 book ai didi

Android fragment transition - 避免动画期间的GC

转载 作者:搜寻专家 更新时间:2023-11-01 08:56:52 24 4
gpt4 key购买 nike

我正在使用以 XML 定义的标准幻灯片动画来制作 fragment 过渡动画。这些 fragment 中的大多数都包含 ListView(但并非总是如此)。 90% 的时间里,动画是流畅且流畅的。每隔一段时间,就会出现口吃。查看logcat,卡顿时总会发生GC:

D/dalvikvm(26619): GC_FOR_ALLOC freed 300K, 9% free 13820K/15044K, paused 40ms, total 40ms

(感觉好像只需要 GC 只是为了 300 KB,这似乎很奇怪)

有没有办法在动画期间避免 GC(之前或之后都可以)。在动画之前调用 System.gc() 不是一个很好的选择,尤其是因为无法保证何时进行垃圾回收。还有其他建议吗?

最佳答案

你问错了问题……如果问题是你的动画卡顿了,那么你应该问“我怎样才能更深入地了解实际发生的事情?”您的 logcat 中的一些 GC_FOR_ALLOC 日志信息不足以分析此问题。如果您的应用有时性能不佳,那不是因为您忘记调用 System.gc(),相信我。 :)

显然,避免垃圾收集的最佳方法是减少应用程序中的对象分配量……这是既定的。如果这些问题不是很明显,您可以使用 DDMS 中提供的“Allocation Tracker”来进一步分析这些问题。

我还建议您观看这些视频...它们真的很好,让您更深入地了解 Android 的图形渲染管道是如何工作的(Romain Guy 和 Chet Haase 也很搞笑 :P ).

最后,我建议您使用“设置 --> 开发人员选项”中的工具。查看this blog post由 Romain Guy 获取更多信息(请注意,该帖子有点过时了......从 4.3 开始,工具变得更容易使用......他们在“Android 图形性能”中讨论了对这些工具所做的更改“上面链接的视频)。如果您的目标是让动画达到或低于 60fps,Systrace 和/或 Profile GPU Rendering 特别有用。

关于Android fragment transition - 避免动画期间的GC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18359832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com