由于 onCreate 活动的负载过重,如何避免活动之间出现黑屏

Posted

技术标签:

【中文标题】由于 onCreate 活动的负载过重,如何避免活动之间出现黑屏【英文标题】:how can I avoid Black screen between activities because of hard load on onCreate activity 【发布时间】:2019-03-05 02:54:05 【问题描述】:

我有一个等待 2 秒并调用主要活动的启动屏幕,该活动是一个仪表板,可从数据库中检索和计算大量数据。 问题是在两个活动之间(在启动屏幕的 2 秒之后)显示了一个持久的黑屏,用户应该等待第二个活动显示,因为活动之前做了很多事情出现。 是否有一个简单的解决方案来避免 onCreate 方法的繁重工作。

【问题讨论】:

在第二个活动开始时使用任何 材料加载器 并显示诸如 正在加载数据.. 请稍候之类的消息 Ali,您能否建议一个代码。我的意思是我应该什么时候创建材料加载器以及什么时候出现真正的活动? 发布代码的相关部分,以便我们更好地了解如何为您提供帮助。 您可以将繁重的工作放在后台线程中。如果加载时间超过 5 秒(可能在旧设备上),这也将避免“应用程序无响应”错误 你为什么不检索数据并在 SplashActivity 本身中进行计算,这样做你不必让用户在获取数据时反复等待 2 秒。您可以将该结果发送到下一个活动以显示它,但由于未提及正在发生的计算,这可能可行,也可能不可行。 【参考方案1】:

您可以在database 活动正在进行时启动ProgressBar,因为database 的东西被设计为在后台线程中运行,所以引入一种interactivity 是一个很好的做法,例如不确定@ 987654325@ 等,以便用户在与UI 交互之前将understand 执行某种操作。

查看它的另一种方法是确保您没有运行应该在UI thread 上的background 中运行的线程,因为这将锁定UI,这不是一个好习惯.....

【讨论】:

以上是关于由于 onCreate 活动的负载过重,如何避免活动之间出现黑屏的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Android 缓存视图并避免每次都调用 onCreate

如何避免在启动 Activity 时调用 onCreate()?

如何避免mysql DB的高负载?

如何避免 FragmentManager 重新创建片段?

是否可以检查是否由于方向更改而调用了 onCreate?

网站负载过重 + ROR