使用AsyncTask或Service在后台上传文件更好吗?

时间:2012-12-04 15:17:10

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

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

什么是更好的方法:?

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

* 2使用服务:有人建议我使用Service + ui通知。我觉得使用AsyncTask,因为它对我来说很好。使用Service over AsyncTask是否有任何优势。

1 个答案:

答案 0 :(得分:9)

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

您的上传方案需要通过IntentService来实施。这会将上传与特定活动分离,并使您的应用在Android生命周期方面成为优秀的Android公民。

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