Android 使用 firebase 冷启动缓慢
Android slow cold start with firebase
我觉得我的应用程序冷启动很慢,当 Firebase Performance 提到这一点时我更加确定。
我用 logcat Displayed
进行了初步比较,显示在我的三星 galaxy S8 上:
/.list.MainActivity: +2s81ms
这是通过在 Android Studio 中按下 play
按钮来复制的 >>
从我的手机中关闭应用程序 phone >>
在我的手机中再次打开它phone(即不使用 android 工作室)
对比已知的应用程序,快的应用程序在400ms左右,慢的应用程序(如Whatsapp和facebook)是1s,所以2秒很多!
我花了将近 2 天的时间,最终找到了以下内容,
如果我正在制作一个简单的 Hello World 应用程序,冷启动时间约为 0.660 秒,这对于应用程序什么也不做,与发布的应用程序相比只有 0.350s
如果我在 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.2秒,甚至超过Whatsapp和Facebook
这么简单的代码冷启动怎么这么慢?我是否缺少 Android 工作室中的任何设置?也许清单或 gradle?我可以做些什么来改善它?
当您将 Firebase 添加到您的应用程序时,它会合并到 automatically loads and initializes Firebase 的 ContentProvider 中,以便在您的代码被调用后立即使用 API。你正在为此付出代价。但这并不一定能解释一切,因为我们无法确切地看到您的应用可能还在做什么,或者您如何衡量启动时间。
事实证明,我们的调试版本和发布版本之间存在很大差异。在我为 google 上的 alpha 测试人员创建了一个发布版本后,将 minifyEnabled
、shrinkResources
、debuggable
设置为 false
等。现在应用程序冷启动大约 700 毫秒。
此外,我不确定,如果一个应用程序刚刚安装和安装并冷启动几次后有区别(当然不要与热启动混淆)
这并不能完全解释我经历过的所有事情,我仍然有点困惑,但我猜我不知道 android 系统(和 firebase)有很多可能会影响冷启动时间
我觉得我的应用程序冷启动很慢,当 Firebase Performance 提到这一点时我更加确定。
我用 logcat Displayed
进行了初步比较,显示在我的三星 galaxy S8 上:
/.list.MainActivity: +2s81ms
这是通过在 Android Studio 中按下 play
按钮来复制的 >>
从我的手机中关闭应用程序 phone >>
在我的手机中再次打开它phone(即不使用 android 工作室)
对比已知的应用程序,快的应用程序在400ms左右,慢的应用程序(如Whatsapp和facebook)是1s,所以2秒很多!
我花了将近 2 天的时间,最终找到了以下内容,
如果我正在制作一个简单的 Hello World 应用程序,冷启动时间约为 0.660 秒,这对于应用程序什么也不做,与发布的应用程序相比只有 0.350s
如果我在 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.2秒,甚至超过Whatsapp和Facebook
这么简单的代码冷启动怎么这么慢?我是否缺少 Android 工作室中的任何设置?也许清单或 gradle?我可以做些什么来改善它?
当您将 Firebase 添加到您的应用程序时,它会合并到 automatically loads and initializes Firebase 的 ContentProvider 中,以便在您的代码被调用后立即使用 API。你正在为此付出代价。但这并不一定能解释一切,因为我们无法确切地看到您的应用可能还在做什么,或者您如何衡量启动时间。
事实证明,我们的调试版本和发布版本之间存在很大差异。在我为 google 上的 alpha 测试人员创建了一个发布版本后,将 minifyEnabled
、shrinkResources
、debuggable
设置为 false
等。现在应用程序冷启动大约 700 毫秒。
此外,我不确定,如果一个应用程序刚刚安装和安装并冷启动几次后有区别(当然不要与热启动混淆)
这并不能完全解释我经历过的所有事情,我仍然有点困惑,但我猜我不知道 android 系统(和 firebase)有很多可能会影响冷启动时间