我有一个在后台运行的服务,通过振动通知状态栏。但是,当我的手机进入睡眠状态时,它不再通知振动。如何在设备处于睡眠状态时启用此功能?
答案 0 :(得分:1)
结帐PARTIAL_WAKE_LOCK。屏幕关闭时,您可以保持服务正常运行。 根据开发人员的说法,它非常简单:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
wl.acquire();
..cpu will stay running on during this section..
wl.release();
在您的情况下,如果您希望始终保持服务正常运行,请在onStartCommand()
获取锁定并在onDestroy()
中发布。
答案 1 :(得分:0)
首先处理权限(在清单文件中):
<uses-permission android:name="android.permission.WAKE_LOCK" />
然后,最好在应用程序文件或任何地方使用它:
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"MyWakelockTag");
if(/*condition*/) {
wakeLock.acquire(); //keep CPU awake
} else {
wakeLock.release(); //disable keep CPU awake
}
虽然这是一个非常酷的功能,但强大的功能带来了巨大的责任:它耗尽了你的电池寿命,因此使用它的责任。
我更喜欢在晚上发布此PARTIAL_WAKE_LOCK,因为基本用户不会在工作时间之外使用它。