我认为这几乎是其他SO问题中已经描述的标准情况,但我仍然需要澄清这一问题:
所以我有一个Android应用程序,有一个Activity和一个服务。"活动"与服务无关。服务必须每分钟向远程服务器发送一些消息。据我所知,我需要使用WakeLock来保持CPU运行,同时允许屏幕关闭(这样我就可以解决屏幕关闭时服务停止的问题)。到目前为止还不错。
我的问题是:我可以获取锁,将消息发送到服务器,释放锁,并在一分钟后再次获取它吗?这样,在这一分钟的暂停期间,CPU也在休眠。以节省电池为最终目标。我担心答案是"不",因为一旦你让CPU休眠,你就无法唤醒它,除非是从较低级别(操作系统而非应用程序)唤醒。
向致以最良好的问候
响应很简单:不。在这种情况下,你可以设置一个PendingIntent,并使用Android警报管理器每分钟被唤醒一次。
警报管理器是一种方法,但您还需要从警报接收器委托WakefulIntentService来完成工作(因为接收器将在5秒后ANR)。请参阅PowerManager。PARTIAL_WAKE_LOCK android链接。