有没有办法限制服务分配的资源?

Is there a way to limit the resources allocated by a Service?

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

具体来说,用户被发送到设备的本机相机拍摄照片,然后照片通过 intent 返回到他们从中 "approve" 照片的应用程序。

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

一切正常。

但是...在连接不良但足以进行 HTTP 握手的情况下,应用程序会发现自己处于一种状态,即使卸载正在服务中发生,但在用户到来时 *从拍照返回到我的应用程序(并且 Android 正在将 4-8mb 的照片发送回我的批准 Activity,我的应用程序挂起 - 有时足够长以引发 "do you want to kill or wait" 提示。最终(如果您等待)它确实成功返回到应用程序。

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

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

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

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

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