基本上在 Android 上,我正在尝试从 Web 服务上传/下载数据,并有一个进度条,应该显示进度百分比。
以下是我实施的方法以及考虑它们的原因:
- 选择
IntentService
在后台运行: 根据链接,我无法使用绑定服务,因为绑定的 Activity/Fragment 被销毁时它会销毁。因此选择了IntentService
overService
。将它移过去一次,意图服务在工作线程上工作,所以它会好得多。 - 广播以接收更新:通过注册它以侦听从上述
LocalBroadcastManager
接收到的广播来更新进度条 UI 的 实现。IntentService
然而,使用这种方法,需要解决以下问题:
不维护广播顺序。广播携带上传/下载的进度百分比。但是由于没有维护顺序,我有可能收到过时的更新(例如:我可能会在 40% 之后收到 30%)。我也尝试过使用sendBroadcastSync
the 方法,LocalBroadcastManager
但它不能始终如一地工作(我对此不太确定)。因此,我尝试通过实现Messenger
,Handler
但是我知道一旦重新创建 UI(Activity/Fragment 被销毁和创建),该方法将无法重新连接到正在进行的上传/下载。基本上,对 的引用Handler
与先前的活动/片段一起丢失,因此消息不会传递到 UI 进行更新。
一段时间以来,我一直在努力解决问题,但我无法完成。你的智慧之言会很有帮助。