为什么某些 android 应用程序启动如此之快?
Why do some android apps start so quickly?
我最近查看了 logcat,发现我的应用程序比其他应用程序需要更多的启动时间。然后我创建了一个空 activity 的新项目,但它仍然比其他一些应用程序慢。
2021-07-20 21:28:17.750 1321-1344/? I/ActivityTaskManager: Displayed com.tutaf.myapplication/.MainActivity: +956ms
比较:
- 电报 X 在 400-500 毫秒后开始
- Firefox:550-1000 毫秒
- 可见光通信:700-900 毫秒
- 4PDA:400-600 毫秒
- 总指挥官:600-800 毫秒
为什么这些应用程序比空应用程序启动得更快,有没有办法更接近它们的结果?
调查 logcat 后,我发现在应用程序 Make-Span
(启动显示)期间。它有几个 Time Consuming Operations
。此外,如果您减轻这些密集的操作,您将能够加快应用程序的启动速度。在下面,我已经澄清了问题:
2021-07-20 22:43:50.730 => ok
2021-07-20 22:43:50.730 => ok
2021-07-20 22:43:50.748 => ok
2021-07-20 22:43:50.749 => ok
2021-07-20 22:43:50.750 => ok
2021-07-20 22:43:50.792 => spike : 42ms
2021-07-20 22:43:50.793 => ok
2021-07-20 22:43:50.820 => ok
2021-07-20 22:43:50.822 => ok
2021-07-20 22:43:50.843 => ok
2021-07-20 22:43:50.884 => spike : 41ms
2021-07-20 22:43:50.895 => ok
2021-07-20 22:43:51.170 => spike : 275ms : INTENSE
2021-07-20 22:43:51.171 => ok
2021-07-20 22:43:51.173 => ok
2021-07-20 22:43:51.188 => ok
2021-07-20 22:43:51.189 => ok
2021-07-20 22:43:51.340 => spike : 151ms : INTENSE
2021-07-20 22:43:51.341 => ok
2021-07-20 22:43:51.481 => spike : 140ms : INTENSE
2021-07-20 22:43:51.481 => ok
2021-07-20 22:43:51.494 => ok
2021-07-20 22:43:51.550 => spike : 56ms
2021-07-20 22:43:51.551 => ok
2021-07-20 22:43:51.676 /.MainActivity: +943ms
因此,如果您减轻 INTENSE
峰值 (275ms +151ms + 140ms = 566ms),应用程序的启动需要 377ms
(943ms - 566ms),这是您预期的启动时间。
建议
- 不做胖主Activity
- 完成大部分操作
async
- 不要对 Main
Data-Intense
操作 Activity
- 不要在 Main Activity 的 UI
中放置太多图形元素
- 使您的 Main Activity 尽可能轻量
我最近查看了 logcat,发现我的应用程序比其他应用程序需要更多的启动时间。然后我创建了一个空 activity 的新项目,但它仍然比其他一些应用程序慢。
2021-07-20 21:28:17.750 1321-1344/? I/ActivityTaskManager: Displayed com.tutaf.myapplication/.MainActivity: +956ms
比较:
- 电报 X 在 400-500 毫秒后开始
- Firefox:550-1000 毫秒
- 可见光通信:700-900 毫秒
- 4PDA:400-600 毫秒
- 总指挥官:600-800 毫秒
为什么这些应用程序比空应用程序启动得更快,有没有办法更接近它们的结果?
调查 logcat 后,我发现在应用程序 Make-Span
(启动显示)期间。它有几个 Time Consuming Operations
。此外,如果您减轻这些密集的操作,您将能够加快应用程序的启动速度。在下面,我已经澄清了问题:
2021-07-20 22:43:50.730 => ok
2021-07-20 22:43:50.730 => ok
2021-07-20 22:43:50.748 => ok
2021-07-20 22:43:50.749 => ok
2021-07-20 22:43:50.750 => ok
2021-07-20 22:43:50.792 => spike : 42ms
2021-07-20 22:43:50.793 => ok
2021-07-20 22:43:50.820 => ok
2021-07-20 22:43:50.822 => ok
2021-07-20 22:43:50.843 => ok
2021-07-20 22:43:50.884 => spike : 41ms
2021-07-20 22:43:50.895 => ok
2021-07-20 22:43:51.170 => spike : 275ms : INTENSE
2021-07-20 22:43:51.171 => ok
2021-07-20 22:43:51.173 => ok
2021-07-20 22:43:51.188 => ok
2021-07-20 22:43:51.189 => ok
2021-07-20 22:43:51.340 => spike : 151ms : INTENSE
2021-07-20 22:43:51.341 => ok
2021-07-20 22:43:51.481 => spike : 140ms : INTENSE
2021-07-20 22:43:51.481 => ok
2021-07-20 22:43:51.494 => ok
2021-07-20 22:43:51.550 => spike : 56ms
2021-07-20 22:43:51.551 => ok
2021-07-20 22:43:51.676 /.MainActivity: +943ms
因此,如果您减轻 INTENSE
峰值 (275ms +151ms + 140ms = 566ms),应用程序的启动需要 377ms
(943ms - 566ms),这是您预期的启动时间。
建议
- 不做胖主Activity
- 完成大部分操作
async
- 不要对 Main
Data-Intense
操作 Activity - 不要在 Main Activity 的 UI 中放置太多图形元素
- 使您的 Main Activity 尽可能轻量