Android的;设备处于睡眠状态时的通知

时间:2014-05-28 03:22:44

标签: android android-service android-notifications

我有一个在后台运行的服务,通过振动通知状态栏。但是,当我的手机进入睡眠状态时,它不再通知振动。如何在设备处于睡眠状态时启用此功能?

2 个答案:

答案 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,因为基本用户不会在工作时间之外使用它。