Java 在后台加载图像、视频
我正在尝试做一个应用程序,它将显示一些图像和视频。因此,我计划添加一个大约2秒的启动屏幕。2秒钟后,用户将进入应用程序的主屏幕 我想在用户处于初始屏幕时开始加载图像和视频,这样用户在主屏幕时应该等待最少的时间 因此加载将在启动屏幕开始,两秒钟后,用户将被带到主屏幕,无论加载是否完成。 现在,由于这涉及两个活动,我应该使用异步任务还是应该使用包含异步任务(用于回调代码完成)的服务? 哪一个更好同样在Android 8.0中,使用服务是否有任何限制? 我认为如果没有正确编码,在两个屏幕之间使用异步任务可能会导致内存泄漏 任何帮助都会非常感激Java 在后台加载图像、视频,java,android,service,android-asynctask,media,Java,Android,Service,Android Asynctask,Media,我正在尝试做一个应用程序,它将显示一些图像和视频。因此,我计划添加一个大约2秒的启动屏幕。2秒钟后,用户将进入应用程序的主屏幕 我想在用户处于初始屏幕时开始加载图像和视频,这样用户在主屏幕时应该等待最少的时间 因此加载将在启动屏幕开始,两秒钟后,用户将被带到主屏幕,无论加载是否完成。 现在,由于这涉及两个活动,我应该使用异步任务还是应该使用包含异步任务(用于回调代码完成)的服务? 哪一个更好同样在Android 8.0中,使用服务是否有任何限制? 我认为如果没有正确编码,在两个屏幕之间使用异步任
编辑:我的应用程序还有一项功能,因此无法让用户在启动屏幕中等待加载完成。因此,基本上您希望在启动屏幕中开始下载,并在随后的活动中继续下载。这样,您仍然必须实现加载动画。在您的情况下,我建议您在下载完所有内容后立即完成启动屏幕。这样,在应用程序的生命周期内,您就不必再下载任何东西了。因此,基本上您希望在启动屏幕中开始下载,然后在接下来的活动中继续下载。这样,您仍然必须实现加载动画。在您的情况下,我建议您在下载完所有内容后立即完成启动屏幕。这样,你就不必在应用程序的生命周期内再下载任何东西。使用AsyncTask在两个活动之间共享结果不是很好,因为在Splash活动中创建的AsyncTack在切换到主活动时将被解除(停止)。在这种情况下,最好使用服务,主屏幕将订阅结果 使用AsyncTask在两个活动之间共享结果不是很好,因为在Splash活动中创建的AsyncTack在切换到主活动时将被解除(停止)。在这种情况下,最好使用服务,主屏幕将订阅结果 AsyncTasks即使在切换到新活动后仍继续运行。您可以尝试以下流程:
1. Splash screen
2. Trigger Async Task
3. Main Activity
4. Show Images/Videos
唯一的问题是,你无法确定一个时间来完成第二个任务,而无法开始第四个任务。这就是异步任务的本质。您可以通过在AsyncTask中使用OnPostExecute来解决问题
示例:OnPostExecute调用另一个将启用按钮的方法。用户可以单击按钮查看图像/视频。但是,看到某些按钮突然被启用,这可能不是一个好的用户体验。异步任务即使在切换到新活动后仍会继续运行。您可以尝试以下流程:
1. Splash screen
2. Trigger Async Task
3. Main Activity
4. Show Images/Videos
唯一的问题是,你无法确定一个时间来完成第二个任务,而无法开始第四个任务。这就是异步任务的本质。您可以通过在AsyncTask中使用OnPostExecute来解决问题
示例:OnPostExecute调用另一个将启用按钮的方法。用户可以单击按钮查看图像/视频。但是,看到一些按钮突然被启用,这可能不是一个好的用户体验。在这种情况下,我宁愿使用自己的
处理程序创建一些单例
(在单独的线程
)将在启动屏幕
启动。在主屏幕
将启动后,它应该询问Singleton
关于各自的数据,或者自己签名以接收该数据。在这种情况下,我宁愿使用自己的处理程序
(在单独的线程
中工作)创建一些Singleton
,这将在启动屏幕上启动。在主屏幕
将启动后,它应该询问单身人士
有关各自数据的信息,或者自己签名以接收这些数据。谢谢您的回答。但是,即使异步任务是一个单独的类并且只从初始屏幕启动,它也会被销毁。如果是,那么我可以在应用程序类中创建一个方法,该方法将启动异步TAK并仅从初始屏幕调用该方法。这样可以吗?如果活动被销毁,那么所有对象都将被销毁,任务将停止。当在应用程序中创建任务时,它将在活动被销毁后继续工作。在这种情况下,您需要在应用程序中保存AsyncTask的结果。Ok。非常感谢你。将在我的应用程序类中创建一个方法,然后使我的启动屏幕从此开始异步任务。并将结果保存在我的应用程序类中。再次感谢。好的。只需再考虑一下,如果启动屏幕被破坏时,从启动屏幕创建的异步任务被破坏,将会发生什么。会发生车祸吗?或者会对最终用户产生任何其他明显的不利影响。不会,不会发生崩溃,但您可以查看此问题以了解更多信息:谢谢您的回答。但是,即使异步任务是一个单独的类并且只从初始屏幕启动,它也会被销毁。如果是,那么我可以在应用程序类中创建一个方法,该方法将启动异步TAK并仅从初始屏幕调用该方法。这样可以吗?如果活动被销毁,那么所有对象都将被销毁,任务将停止。当在应用程序中创建任务时,它将在活动被销毁后继续工作。在这种情况下,您需要在应用程序中保存AsyncTask的结果。Ok。非常感谢你。将在我的应用程序类中创建一个方法,然后使我的启动屏幕从此开始异步任务。并将结果保存在我的应用程序类中。再次感谢。好的