在后台加载图像,视频

时间:2018-07-10 09:02:16

标签: java android service android-asynctask media

我正在尝试制作一个要显示一些图像和视频的应用程序。因此,我计划添加大约2秒的启动屏幕。 2秒后,用户将被带到应用程序的主屏幕。

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

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

哪个会更好。 在Android 8.0中,使用服务也有任何限制吗?

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

任何帮助都会非常感激。

编辑:我的应用程序还具有一项功能,因此无法使用户在启动屏幕中等待加载结束。

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

因此,基本上,您希望在启动屏幕中开始下载,并在随后的活动中继续下载。这样,您仍然必须实现加载动画。对于您而言,我建议您在下载所有内容后立即完成启动屏幕。这样,您就不必在应用程序的生命周期内下载任何内容。

答案 2 :(得分:0)

AsyncTasks即使在切换到新活动后仍继续运行。您可以尝试以下流程:

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

唯一的问题是,您将无法确定2号完成启动4号所需的时间。这是AsyncTasks的本质。您可以通过在AsyncTask中使用OnPostExecute来解决。

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

答案 3 :(得分:0)

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