安卓:后台完全上传文件

14

我需要创建一个多文件上传功能(3-7张照片),但这个上传必须完全由系统管理,即使用户关闭了应用程序,在上传完成之前它也应该继续工作。

类似于Facebook上传照片的方式,如果应用程序被杀死:进度也会显示在通知栏中。

我目前使用一个类,我认为是FtpClient,它运行良好,但如果我关闭应用程序,它就会停止。一切都是异步的,但只针对应用程序,而不是针对系统。

我该怎么办?

2个回答

14

您应该使用 Service 来完成此目的。它将在后台运行,您可以在其中执行所有的上传 / 下载工作。您可以参考这个教程了解更多信息,并且可以从这里这里的官方文档中了解更多内容。

您只需将所有的逻辑从Activity/Fragment移动到Service中,即可在后台执行,即使您的应用已关闭。


但是我可以将多个文件添加到上传器中吗?还是需要创建一个zip文件? - D Ferra
1
这完全取决于您的应用逻辑,而不涉及服务。您可以以不同的方式实现上传。您可以在多个线程上上传多个文件,或者在多个服务中上传,或者将其打包成zip文件 - 这都取决于您想要实现的目的和目标。 - VadymVL
3
谷歌现在推荐使用Work Manager:https://developer.android.com/guide/background - lazarevzubov

2

这个库 - https://github.com/gotev/android-upload-service,在2020年4月已经获得了2.3K的星数。

enter image description here

该库提供以下功能:

  • 可轻松上传文件(支持多部分/二进制/FTP),并在后台显示上传进度通知。
  • 可使用FTP、HTTP多部分/form-data或二进制请求将文件上传到服务器。
  • 即使设备处于空闲状态(Doze模式),也能在后台处理多个并发上传。
  • 失败时自动重试上传,并具有可配置的指数退避功能。
  • 成功上传后,可以自动删除已上传的文件。

使用此库的应用和库 -

  • JIRA Cloud
  • Quora
  • ...

这是一个非常糟糕的库,我花了几个小时用Java修复通知渠道问题。我还没有在Kotlin上尝试过。 - ahtasham nazeer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接