在后台加载图像、视频



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

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

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

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

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

任何帮助都将不胜感激。

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

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

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

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新