由“ inflater.inflate()”引起的android应用长时间“冷启动”

时间:2019-04-06 12:41:42

标签: android

我正在尝试对应用程序进行漫长的冷启动-这需要5..10秒,具体取决于(不确定)Android OS的状态。

在整个代码中添加了System.currentTimeMillis()之后,我发现大约有50%的时间进入了((LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(...)

具有最佳性能的启动膨胀如下所示:

  1. 主视图- 0.4秒
  2. 子视图(带有页眉和页脚的列表视图的包装)- 0.6s
  3. 内部列表视图- 1.5秒(20行,第一行大约需要0.1秒,最后一个大约需要0.02秒)

(电话在Snapdragon 820 + Android 8.1 / LineageOS 15.1上运行)

在我单击应用程序并返回到同一视图之后,包括所有膨胀的整个初始化工作大约快了10倍,并且性能似乎还不错。

问题是-有什么想法可以提高冷启动时的充气性能?

(我怀疑这是由于Android Java VM正在预热引起的,但是10倍以上的性能差异似乎令人怀疑。如果是这种情况,那么我无能为力了

1 个答案:

答案 0 :(得分:0)

这可能是由于不良的布局结构引起的。 请参见this页,并按照指南尝试优化xml布局。