gpt4 book ai didi

java - 如何改善应用程序的 ActivityManager 加载时间?

转载 作者:行者123 更新时间:2023-11-30 09:48:36 24 4
gpt4 key购买 nike

我编写了一个在启动时处理大量数据的应用程序;应用程序的首次启动时间相当慢,但后续启动也是如此。

我之前认为相对无响应的启动时间(~7 秒)是由于首次加载时的数据处理所致 - 一些调试建议冷加载大约 2 秒。所以我重新设计了我的数据结构,以便它们更容易在两次启动之间序列化为持久存储(因此它缓存了东西)并且现在当应用程序在大约 20 毫秒内完成时保存状态,加载时间大约为 10-20 毫秒。好多了。 (p.s. 它没有使用内置的 Java 序列化,因为状态文件现在非常简单,更容易保存在一个普通的、人类可读(和可编辑)的文本文件中——不过从中重新加载仍然非常快!)

但是,我仍然发现应用程序启动时间约为 5 秒 - 我查看了 aLogCat,其中有一个条目:

I/ActivityManager(...) blah blah blah: +5s193ms

加载一个相对简单的布局(一些嵌套的 LinearLayouts 和一些 TextViews - 没什么特别的,也没有图像)需要超过 5 秒 - 诚然,时间随着后续启动而减少(我关闭应用程序并再次打开它,约为 700 毫秒;冲洗并重复类似的结果)。

好吧,我的问题是:我怎样才能缩短应用加载时间?我很高兴 第一次 加载需要一点时间来处理所有内容 - 这很好。但是有没有办法让我把东西保存在内存中,或者至少让它进入可恢复的状态,这样无论 ActivityManager 正在做什么都不会花费这么长时间?我希望它是我可以打开的东西(可能绑定(bind)到长期搜索或类似的东西),做任何事情,然后再次关闭它 - 因此它需要快速打开!

提前致谢:)

塞布

最佳答案

在您在 onCreate 中启动的后台线程中运行繁重的启动工作。 (AsyncTask 对此很有用。)设计您的 UI 以在没有数据时显示有意义的内容(至少是不确定的进度条)。加载数据后,发布一个 Runnable(或在您的 AsyncTask 中实现 onPostExecute)以将 UI 更新为真实的东西。

关于java - 如何改善应用程序的 ActivityManager 加载时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6157426/

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