Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在后台加载图像、视频_Java_Android_Service_Android Asynctask_Media - Fatal编程技术网

Java 在后台加载图像、视频

Java 在后台加载图像、视频,java,android,service,android-asynctask,media,Java,Android,Service,Android Asynctask,Media,我正在尝试做一个应用程序,它将显示一些图像和视频。因此,我计划添加一个大约2秒的启动屏幕。2秒钟后,用户将进入应用程序的主屏幕 我想在用户处于初始屏幕时开始加载图像和视频,这样用户在主屏幕时应该等待最少的时间 因此加载将在启动屏幕开始,两秒钟后,用户将被带到主屏幕,无论加载是否完成。 现在,由于这涉及两个活动,我应该使用异步任务还是应该使用包含异步任务(用于回调代码完成)的服务? 哪一个更好同样在Android 8.0中,使用服务是否有任何限制? 我认为如果没有正确编码,在两个屏幕之间使用异步任

我正在尝试做一个应用程序,它将显示一些图像和视频。因此,我计划添加一个大约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。非常感谢你。将在我的应用程序类中创建一个方法,然后使我的启动屏幕从此开始异步任务。并将结果保存在我的应用程序类中。再次感谢。好的