1

我有一项在 2 部手机中执行的服务。它们使用套接字相互通信并执行一些脚本(可能需要大约 1-2 分钟)并在它们之间交换文件(使用 HTTP Post)。

我希望这个执行继续,即使屏幕关闭,即获取唤醒锁。我看到了这个链接,但我不确定将它合并到我的代码中的哪个位置(因为设备可能会在执行过程中休眠)。非常感谢任何指导。谢谢你。

4

2 回答 2

2

我在 2 部手机上使用相同的应用程序。在 onCreate() 中,它启动一个侦听端口的服务。单击 phone1 中的按钮,将文件的 HTTP Post 发送到 phone2 并且通信继续进行(因为电话 2 最初也在端口上侦听)。

好吧,您的主要目标似乎是让 phone2 的所有者用弯刀攻击您,因为 phone2 将耗尽电池。

话虽如此,您的 HTTP 守护程序将需要在一个服务中,您可以在其中获取和发布 a WakeLock(并且可能是 a WifiLock,因为您想要的内容在大多数移动数据连接上都不起作用)。

WakefulIntentService在这里没有用,因为它是为明智的场景设计的,在这种场景中,我们WakeLock只需要在很短的时间内保持获得的内容,以完成一些特定的任务。在你的情况下,你需要WakeLock无限期地保留你获得的东西,因为你不知道什么时候可能需要完成工作。

我不确定将其合并到我的代码中的哪个位置。

在服务中,大概。您可能会获得服务的WakeLockinonCreate()并在服务中释放它onDestroy()。如果您希望避免与弯刀相关的消亡,您将确保用户对服务运行的确切时间有充分的控制权,因此对何时WakeLock生效有充分的控制权。

于 2012-11-13T12:10:09.847 回答
1

为什么不使用服务实现该功能?见这里。我在 android 开发方面不是很有经验,但最近在一个项目中工作过,其中使用服务实现了类似的功能。

于 2012-11-13T10:37:30.813 回答