显示关闭时如何保持 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" />
我正在使用 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" />