2

我觉得我的应用程序冷启动很慢,并且当 Firebase Performance 提到这一点时更加确定。

我使用 logcatDisplayed进行了初步比较,显示在我的三星 Galaxy S8 上:

/.list.MainActivity: +2s81ms

这是通过按下playAndroid Studio 上的按钮>>从我的手机关闭应用程序在我的手机>>中再次打开它(即不使用 android studio)复制的

与已知应用程序相比,大约 400 毫秒的快速应用程序和较慢的应用程序(例如 Whatsapp 和 facebook)是 1 秒,所以 2 秒很多!

我花了将近 2 天的时间,最终找到了以下内容,

如果我正在制作一个简单的Hello World应用程序,冷启动时间约为 0.660 秒,这对于一个什么都不做的应用程序来说是很多的,而与发布的应用程序相比,它只需 0.350 秒

如果我在 gradle 中添加接下来的 4 行(没有任何额外的代码!)

implementation 'com.google.firebase:firebase-firestore:21.4.2'
implementation 'com.firebaseui:firebase-ui-auth:6.2.0'
implementation 'com.google.firebase:firebase-auth:19.3.0'
implementation 'com.firebaseui:firebase-ui-firestore:6.2.0'

冷启动提升到 1.2s 左右,甚至超过了 Whatsapp 和 Facebook

这么简单的代码冷启动怎么这么慢?我错过了 Android Studio 中的任何设置吗?也许是清单或gradle?我能做些什么来改善它?

带有firebase gradle实现的Hello World

4

2 回答 2

2

事实证明,调试版本和发布版本之间存在很大差异。在我为 google play 上的 alpha 测试人员创建了一个发布版本后,将minifyEnabled, shrinkResources,debuggable设置为false等。应用程序冷启动现在大约为 700 毫秒。

另外,我不确定,如果一个刚刚安装的应用程序和一个安装的应用程序在几次后冷启动之间存在差异(当然不要被热启动混淆)

这并不能完全解释我所经历的所有事情,我仍然有点困惑,但我猜有很多关于我不知道的 android 系统(和 firebase)可能会影响冷启动时间

于 2021-01-22T20:15:49.403 回答
0

当您将 Firebase 添加到您的应用程序时,它会合并到一个 ContentProvider 中,该内容提供程序会自动加载和初始化Firebase,以便在调用您的代码后立即可以使用 API。你正在为此付出代价。但这并不一定能解释一切,因为我们无法确切地看到您的应用程序可能在做什么,或者您如何衡量启动时间。

于 2020-04-17T20:47:09.057 回答