android - 在后台上传文件是使用 AsyncTask 还是 Service 更好?

标签 android file-upload android-asynctask android-service

我有一个要求,即用户能够将视频上传到 Amazon S3。我已经使用 amazon sdk 中的 java 高级 api 实现了这一点。在上传过程中,如果用户单击主页按钮,上传必须在后台继续。

什么是更好的方法:?

*1 使用 AsyncTask:我试过使用 AsyncTask,它工作正常。但是如果上传过程在后台持续很长时间,操作系统会杀死应用程序以释放内存。有什么办法可以处理这种情况,让我的应用完成上传过程。

*2 使用服务:有人建议我使用服务+用户界面通知。我喜欢使用 AsyncTask,因为它对我来说效果很好。与 AsyncTask 相比,使用 Service 有什么优势吗?

最佳答案

大多数情况下,AsyncTask 与您的 UI、启动它的 Activity 等耦合。这些将保留在内存中,直到任务完成。

您的这个上传场景请求通过 IntentService 实现.这将使上传与特定 Activity 分离,并使您的应用程序成为 Android 生命周期方面的良好 Android 公民。

您现在可以创建一个从服务定期更新的通知,显示上传状态并允许用户从他的状态栏取消上传。

关于android - 在后台上传文件是使用 AsyncTask 还是 Service 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13706059/

相关文章:

android - 同一个 Activity 调用了两次...多个 AsyncTasks 有问题吗?

java - 使用 AsyncTask 在后台创建一个 GLSurfaceView

android - 如何中断AsyncTaskLoader的后台线程?

android - 如何从位图区域获取多边形形状

android - 尝试在 builder.setPositiveButton 的 onClick() 方法中放置一些代码时获取 'Cannot resolve method ' addOnCompletionListener( )'.......'

php - 带有 enctype 的表单在请求中返回空文件

flutter 网络 : How to Upload a Large File?

android - Float 是 Realm 比较的无效字段

java - 混合 Android View 和 GLSurfaceView

java - Wicket:使用 RepeatingView 删除 FileUpload