问题描述
在我的 android 应用程序中,我看到每当我第一次打开它时它都会从 Firebase
加载数据但同时如果我导航到我的 BottomNavigationBar
或尝试更改活动或片段,即使是我在检索数据时显示的 progressBar
也会像电影一样在 2G 互联网连接中卡住一小会儿。我真的不喜欢这种行为而且我认为它会减少我的应用程序的用户数量。我不知道这个场景背后的确切原因但是也许 logcat 中的这一行大喊这个原因
应用程序可能在其主线程上做了太多工作。
我想知道原因和摆脱它的解决方案。我听说过 AsyncTask
但我不知道是不是这样。
解决方法
你正在做繁重的工作,你的主线程。这就是您的应用程序被冻结的原因。网络是一项非常繁重的工作,因此您必须在单独的线程上执行它。这就是您设置日志 The application may be doing too much work on its main thread
的原因。异步任务是旧解决方案,但您可以使用它。您可以改用 executors
。但是您可以将retrofit2 用于网络请求,因为它们在内部处理线程安全。如果您使用 Kotlin,则可以使用协程。