Android应用在获取数据时表现异常

问题描述

在我的 android 应用程序中,我看到每当我第一次打开它时它都会从 Firebase 加载数据但同时如果我导航到我的 BottomNavigationBar 或尝试更改活动或片段,即使是我在检索数据时显示progressBar 也会像电影一样在 2G 互联网连接中卡住一小会儿。我真的不喜欢这种行为而且我认为它会减少我的应用程序的用户数量。我不知道这个场景背后的确切原因但是也许 logcat 中的这一行大喊这个原因

应用程序可能在其主线程上做了太多工作。

我想知道原因和摆脱它的解决方案。我听说过 AsyncTask 但我不知道是不是这样。

解决方法

你正在做繁重的工作,你的主线程。这就是您的应用程序被冻结的原因。网络是一项非常繁重的工作,因此您必须在单独的线程上执行它。这就是您设置日志 The application may be doing too much work on its main thread 的原因。异步任务是旧解决方案,但您可以使用它。您可以改用 executors 。但是您可以将retrofit2 用于网络请求,因为它们在内部处理线程安全。如果您使用 Kotlin,则可以使用协程。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...