Android 运行服务以编程方式监控来电,即使手机屏幕已锁定

Android 运行服务以编程方式监控来电,即使手机屏幕已锁定,android,android-service,android-wake-lock,Android,Android Service,Android Wake Lock,我制作了一个应用程序,可以出于某种目的监控来电。该应用程序使用一项服务,该服务反过来使用PhoneStateListener来监控来电。我的应用程序要求即使在应用程序未运行且屏幕处于锁定状态时,也要执行来电监控行为 当手机屏幕被锁定且应用程序未运行时,复杂性就开始了。我仍然需要它来监控来电。为此,我决定使用部分唤醒锁定来保持CPU运行,即使手机被锁定 在我这么做之后,这款应用程序在所有情况下都能正常工作,但像这样无限期地使用部分唤醒锁定会影响电池寿命 我在某个地方读到,AlarmManager可

我制作了一个应用程序,可以出于某种目的监控来电。该应用程序使用一项服务,该服务反过来使用PhoneStateListener来监控来电。我的应用程序要求即使在应用程序未运行且屏幕处于锁定状态时,也要执行来电监控行为

当手机屏幕被锁定且应用程序未运行时,复杂性就开始了。我仍然需要它来监控来电。为此,我决定使用部分唤醒锁定来保持CPU运行,即使手机被锁定

在我这么做之后,这款应用程序在所有情况下都能正常工作,但像这样无限期地使用部分唤醒锁定会影响电池寿命

我在某个地方读到,AlarmManager可能是另一种选择。但是AlarmManager用于在特定的时间间隔触发,但是我需要该服务在接到来电时工作,但这是随机发生的


如何使应用程序在不影响功能的情况下更高效地使用电池?

您是否可以尝试使用WakefulBroadcastReceiver代替普通的广播接收器。有关如何使用wakeful的详细信息,请遵循。@cgr:我已经让呼叫检测工作正常,唯一的问题是电池可能会耗尽。wakefulbroadcast接收器用于在保持wakelock的同时启动和停止服务。但我的问题是,我需要该服务在后台继续运行,因为无论手机状态如何(屏幕关闭、屏幕打开、重新启动、应用程序运行、应用程序未运行),来电随时都可能发生。因此,我将无限期地持有部分尾流锁。