【问题标题】:How can I avoid black screen when starting new activity?开始新活动时如何避免黑屏?
【发布时间】:2018-03-20 19:29:10
【问题描述】:

直升机,

我有一些活动,从事互联网相关工作。

当我的网络连接速度很慢时,开始一个新的活动会变成黑屏,几秒钟后就会显示出来。

Internet 工作由 AsyncTask 完成。

如何通过使用进度条来避免这种情况?

【问题讨论】:

  • 检查您的大部分代码是否在 onCreate 中。理想情况下,应该只有静态初始化。在 onStart 中休息。如果您的 Internet 任务需要在屏幕上显示数据,请在 onPreExecute 中启动指示器。
  • 是否有可能在活动之间显示进度条?
  • 这没有意义。进度条附加到活动 1 或活动 2 的视图。另外,在活动之间切换所花费的时间并没有那么高。延迟和黑屏会出现,因为某些操作需要时间并且是在 onCreate 中编写的。尝试将时间戳打印为 onCreate 的第一行,以查看 Activity 加载的速度以及延迟在哪里。
  • 如果您的互联网工作是在AsyncTask 中完成的,那么慢速互联网应该不会影响活动加载时间。请发布您的代码,否则我们所做的任何帮助都只是一场猜谜游戏。

标签: android android-activity android-asynctask android-internet


【解决方案1】:

Android 应该以 60 fps 的速度更新 GUI。 这基本上意味着任何可能花费超过 16 毫秒的操作都不应该在主 GUI 线程上执行。

您的活动创建应该是一个快速的过程,依赖于默认值或可快速访问的数据。任何“长”操作,如网络、数据库和文件系统访问,都应使用工作线程或 AsyncTask 异步执行。

看看Docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    相关资源
    最近更新 更多