微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何改善应用程式的ActivityManager载入时间?

如何解决如何改善应用程式的ActivityManager载入时间?

| 我已经编写了一个应用程序,该应用程序在启动时会处理大量数据;该应用程序的首次启动时间很慢,但随后的启动也是如此。 我以前认为启动响应时间相对较慢(约7秒)是由于首次加载时进行了数据处理-进行一些调试后,大约需要2秒才能完成冷加载。因此,我重新设计了数据结构,以便在启动之间可以更轻松地将其序列化为持久性存储(因此它可以缓存内容),并且当应用程序在大约20ms内完成加载时,它现在可以保存状态,并且加载时间为10-20ms。好多了。 (请注意,它没有使用内置的Java序列化,因为状态文件现在是如此简单,可以更容易地保存在人类可读(可编辑)的纯文本文件中-仍然很漂亮快速从中重新加载!) 但是,我仍然发现该应用程序的启动时间约为5秒-我在一个LogCat中查找了一个条目:
I/ActivityManager(...) blah blah blah: +5s193ms
因此,加载相对简单的布局(几个嵌套的LinearLayouts和几个TextView-没什么特别的,没有图像)需要5秒钟以上的时间-坦白地说,后续启动的时间减少了(我关闭了应用程序,然后再次打开它,\约700毫秒;冲洗并重复以获得类似结果)。 所以我的问题是:如何改善应用程序的加载时间?我很高兴第一次加载需要一些时间来处理所有内容-很好。但是,有什么方法可以将事物保存在内存中,或者至少使它进入可恢复状态,以便ActivityManager所做的事情不会花很长时间?我希望它是我可以打开的(可能绑定到长期搜索或类似工具),执行任何操作,然后再次关闭它-因此它需要快速打开! 提前致谢 :) 塞布     

解决方法

        在
onCreate
中启动的后台线程中运行重型启动工作。 (AsyncTask对此很有帮助。)设计UI以便在没有数据时显示有意义的内容(至少是不确定的进度条)。加载数据后,发布一个Runnable(或在AsyncTask中实现
onPostExecute
)以将UI更新为真实对象。     ,        正如Ted所建议的,仅在UI线程上执行最少的操作。五秒钟的时间加载布局太多了,这意味着有一些启动方法需要很长时间(可能是查询数据库,还是访问网络以填充较长的ListView?)。 如果绝对需要该处理,则使用启动画面(带有“请等待加载数据”或类似标签)。     ,        使用Asyntasks类划分工作。如果您有一些总是相同的数据,例如将其存储在数据库中,以便下次打开应用程序时具有最快的访问权限,并不时更新该内容。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。