2

我有一个应用程序,它有一项服务,可以将人们拍摄的照片卸载到服务器上。

具体来说,用户被发送到设备的本机相机拍摄照片,然后照片通过意图返回到他们“批准”它的应用程序。

这种批准行为将其保存到文件系统中,并且服务每隔 x 秒出现一次,通知等待卸载的文件并卸载它们。

这一切都很好。

但是......在连接不良但足以进行 HTTP 握手的情况下,应用程序会发现自己处于即使卸载发生在服务中的状态,此时用户正从 *返回到我的应用程序拍照(并且 Android 正在将 4-8mb 的照片发送回我的批准活动,我的应用程序挂起 - 有时足以引发“你想杀死还是等待”提示。最终(如果你等待)它确实成功了回到应用程序。

我已经验证这是与网络相关的,因为当连接性很强时(或者当应用程序处于飞行模式时 - 所以上传会立即失败)一切都非常顺利。*唯一发生这种情况的情况是服务中的卸载程序受到 hinky 连接的阻碍。

所以,我的问题是——我能做些什么呢?有什么方法可以隔离服务而不会对应用程序产生更大的影响?我的解决方案是编写一个位于设备上的合作伙伴应用程序,只是想卸载文件(这甚至可以解决问题吗?)。

这是我在向用户提供 WAIT/KILL 提示时得到的报告我不知道该怎么做。

4

1 回答 1

0

答案是服务实际上是在主显示线程上运行的(我被这样一个事实误导了,即当您在服务中进行 HTTP 调用时,您不必手动在单独的线程中运行它)。

http://gmariotti.blogspot.com/2013/03/antipattern-freezing-ui-with-service.html

于 2017-12-01T02:44:05.070 回答