显示关闭时如何保持 IntentService 运行?

How to keep IntentService runnig when display is off?

我正在使用 android sdk 8.

开发一个简单的应用程序

在我的应用程序中,我实现了如下意图服务:

public class NotificationService extends IntentService {

    public NotificationService() {
        super("NotificationService");
    }


    @Override
    protected void onHandleIntent(Intent intent) {
        while (true) {
            /// Send http request to server
            /// notify if new messages received
            SystemClock.sleep(1000);
        }
    }

}

它在显示打开时完美运行,但当 phone 休眠时,此服务将无法完美运行。

我整天都在为这个问题苦苦挣扎。在一些教程中说我们可以使用 BroadcastReceiver 和 PowerManager 来保持 cpu 清醒,但我找不到解决方案!

感谢任何帮助!

使用PowerManager获取一个WakeLock(以下示例使用字段PowerManager.WakeLock wakeLock

PowerManager powerManager = (PowerManager)this.getSystemService(Context.POWER_SERVICE);

this.wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
this.wakeLock.acquire();

您可以这样释放WakeLock

this.wakeLock.release();

您可以在服务为 created/started 或 destroyed/stopped 时调用这些方法。

不要忘记将 WAKE_LOCK 权限添加到您的应用程序清单中

 <uses-permission android:name="android.permission.WAKE_LOCK" />