【问题标题】:Is it better to use AsyncTask or Service to upload a file in background?使用 AsyncTask 或 Service 在后台上传文件更好吗?
【发布时间】:2012-12-04 15:17:10
【问题描述】:

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

什么是更好的方法:?

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

*2 使用服务:有人建议我使用服务 + ui 通知。我喜欢使用 AsyncTask,因为它对我来说很好用。使用 Service 优于 AsyncTask 有什么优势吗?

【问题讨论】:

  • 一项服务。确实。如果你在一个 Activity 中管理你的 AsyncTask,当 Activity 进入后台时它可能会被杀死
  • 你说的。 “操作系统会杀死应用程序以释放内存。”。这是一个严重的劣势。
  • @fiddler 感谢您的建议。所以我想我应该使用 IntentService 而不是 AsyncTask。

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


【解决方案1】:

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

您的这个上传场景需要通过IntentService 来实现。这将使上传与特定活动分离,并使您的应用在 Android 生命周期方面成为良好的 Android 公民。

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

【讨论】:

  • 感谢您的回答。我会更好地使用 IntentService。
  • 优秀的Android公民..关键词..?
猜你喜欢
  • 2016-11-22
  • 2017-10-20
  • 2019-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多