我有一个在2部手机中执行的服务。他们使用套接字相互通信并执行一些脚本(可能需要1-2分钟)并在它们之间交换文件(使用HTTP Post)。
我希望这个执行继续,即使屏幕关闭,即获得一个Wakelock。我看到this link,但我不确定在我的代码中将其合并到哪里(因为设备可能在执行过程中睡觉)。任何指导都非常感谢。谢谢。
答案 0 :(得分:2)
我在2部手机上使用相同的应用程序。在onCreate()中,它启动一个侦听端口的服务。单击phone1中的按钮,将文件的HTTP Post发送到phone2并且通信继续进行(因为电话2最初也会侦听端口)。
好吧,你的主要目标似乎是让phone2的主人用弯刀攻击你,因为phone2将耗尽电池。
话虽这么说,你的HTTP守护进程需要在一个服务中,你获取并发布一个WakeLock
(大概是WifiLock
,因为你想要的东西不适用于大多数移动设备数据连接)。
WakefulIntentService
在这里没用,因为它是专为敏感的场景而设计的,我们需要在短时间内保留WakeLock
才能完成某项特定任务。在您的情况下,您需要无限期地保留WakeLock
,因为您不知道何时可能需要完成工作。
我不知道在我的代码中将其合并到哪里。
在服务中,大概是。您可能会获得服务的WakeLock
中的onCreate()
,并将其发布到服务的onDestroy()
中。如果您希望避免与弯刀相关的消亡,您将确保用户可以完全控制此服务的运行时间,因此可以充分控制此WakeLock
生效的时间。
答案 1 :(得分:1)
为什么不在服务中实现该功能?见here。我在Android开发方面不是很有经验,但最近在一个项目中工作,其功能类似于使用服务实现。