代码之家  ›  专栏  ›  技术社区  ›  Rajesh K

在后台加载图像、视频

  •  0
  • Rajesh K  · 技术社区  · 8 年前

    我正在尝试制作一个应用程序来显示一些图像和视频。所以我计划添加一个大约2秒的启动屏幕。2秒钟后,用户将进入应用程序的主屏幕。

    我想开始加载图像,视频时,用户就在启动屏幕本身,这样用户在主屏幕时应该等待最少的时间。

    因此,加载将从启动屏幕开始,然后在两秒钟后,无论加载完成与否,用户都将被带到主屏幕。 既然这涉及到两个活动,我应该使用异步任务还是应该使用包含异步任务的服务(用于完成代码的回调)?

    哪一个更好。 在Android 8.0中,使用服务是否有任何限制?

    我认为在两个屏幕之间使用异步任务,如果编码不正确,可能会导致内存泄漏。

    任何帮助都会心存感激。

    编辑:我的应用程序还有一个功能,因此不能让用户在启动屏幕上等待加载结束。

    4 回复  |  直到 8 年前
        1
  •  3
  •   redlabrat    8 年前

    使用AsyncTask在两个活动之间共享结果不是很好,因为在启动活动中创建的AsyncTack在切换到主活动时将被解除(停止)。在这种情况下最好使用服务,主屏幕将订阅结果。

        2
  •  1
  •   Caspar Geerlings    8 年前

    所以基本上你想在启动屏幕中开始下载,然后在接下来的活动中继续下载。这样,您仍然需要实现加载动画。在您的情况下,我建议您在下载所有内容后尽快完成初始屏幕。这样,你就不必再在应用程序的生命周期内下载任何东西了。

        3
  •  0
  •   Janaaaa    8 年前

    即使切换到新活动,异步任务也会继续运行。您可以尝试以下流程:

    1. Splash screen
    2. Trigger Async Task
    3. Main Activity
    4. Show Images/Videos
    

    唯一的问题是,你将无法确定一个时间让2完成,以便能够开始4。这就是异步任务的性质。您可以通过在AsyncTask中使用onPostExecute来解决问题。

    示例:onPostExecute调用另一个将启用按钮的方法。用户可以单击按钮查看图像/视频。但是,如果突然看到某个按钮被启用,这可能不是一个好的用户体验。

        4
  •  0
  •   Constantin Chernishov    8 年前

    那样的话,我宁愿创造一些 Singleton 有自己的 Handler (分开工作 Thread ,将从开始 Splash screen . 后 Main screen 会开始的,它应该问 单子 关于各自的数据,或应签字接收该数据。