【发布时间】:2023-02-02 16:00:32
【问题描述】:
我正在开发一个具有大型代码库的应用程序。
问题是当我从冷启动状态启动应用程序时,显示应用程序的第一个屏幕需要很多时间。
基于here我检查了TTID对于应用程序来说,这很可怕:
Displayed com.example.myapp/.ui.MainActivity: +6s501ms
所以我放了一些日志来检查问题出在哪里:
class MyApp : Application() {
override fun onCreate() {
Log.d("Performance", "MyApp::onCreate::start")
super.onCreate()
// App initializations
Log.d("Performance", "MyApp::onCreate::end")
}
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
Log.d("Performance", "MainActivity::onCreate::start")
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Ui initializations
Log.d("Performance", "MainActivity::onCreate::end")
}
}
在此之后我意识到了一些奇怪的事情:
---------------------------- PROCESS STARTED (4572) for package com.example.myapp ----------------------------
13:58:06.819 Performance D MyApp::onCreate::start
13:58:07.066 Performance D MyApp::onCreate::end
13:58:07.132 Performance D MainActivity::onCreate::start
13:58:07.566 Performance D MainActivity::onCreate::end
我注意到一件奇怪的事。 PROCESS_START 和App:onCreate 之间有很多延迟(大约 5 秒)(PROCESS_START 没有任何时间戳,但我手动计算)。此外,应用程序创建和活动创建不会超过1个第二。
那么我该如何解决这个问题呢?这个问题的原因是什么?
【问题讨论】:
-
这是调试版本吗?您是否处于调试模式而不是运行模式?我认为其中任何一个都会导致速度变慢。
-
您可能有 1 个以上注册
ContentObservers的库,它们在进程启动时起作用。 -
@Tenfour04 是的,此日志属于调试版本,但不处于调试模式。另外我要提到的是,由于发布版本的使用报告,我开始检查性能
-
如果您有一个定制的 Application 类进行繁重的处理,那可能是一个原因
-
您添加了赏金,但您是否已查看内容观察器,如上面评论中所述?这可能是罪魁祸首。
标签: android performance kotlin cold-start