在背景中加载图像、视频

Loading Images,Videos in background

我正在尝试制作一个将显示一些图片和视频的应用程序。所以我打算添加一个大约 2 秒的启动画面。 2 秒后,用户将被带到应用程序的主屏幕。

我想在用户位于初始屏幕时开始加载图像、视频,以便用户在主屏幕时等待的时间最少。

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

哪个更好。 还有Android8.0使用服务有什么限制吗?

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

任何帮助将不胜感激。

编辑:我的应用程序还有一项功能,因此无法让用户在启动画面中等待,直到加载结束。

所以基本上你想在启动画面中开始下载并在随后的 activity 中继续下载。这样,你还是要实现一个加载动画。对于您的情况,我建议您在下载完所有内容后立即完成启动画面。这样,您就不必再在应用程序的生命周期内下载任何东西。

在 2 个 Activity 之间共享结果时使用 AsyncTask 不是很好,因为在 Splash activity 中创建的 AsyncTack 在切换到 Main activity 时将被销毁(停止)。在这种情况下最好使用服务,主屏幕将订阅结果。

即使切换到新的 activity,AsyncTasks 仍会继续 运行。您可以尝试以下流程:

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

唯一的问题是,您无法确定#2 完成的时间才能开始#4。这就是 AsyncTasks 的本质。您可以通过在 AsyncTask 中使用 OnPostExecute 来解决问题。

示例:OnPostExecute 调用另一个将启用按钮的方法。用户可以点击按钮查看Images/Videos。但是,这可能不是一个很好的用户体验,看到一些按钮突然被启用。

在那种情况下,我宁愿用自己的 Handler 创建一些 Singleton(在单独的 Thread 中工作),它将在 Splash screen 开始。 Main screen 启动后,它应该向 Singleton 询问各自的数据,或者应该签名接收该数据。