我有一个启动服务的应用程序。该服务有一个计时器,每隔30秒弹出一次通知。我注意到以下行为:
如何在关闭屏幕的情况下运行服务。
(实际应用程序仅检查是否应每30秒检查一次通知,但出于测试目的,上述方案是可以的)
谢谢!
答案 0 :(得分:4)
我遇到了一些问题。
您可以使用WakeLock来完成工作! 像这样:
PowerManager pm = (PowerManager)getApplicationContext().getSystemService(
getApplicationContext().POWER_SERVICE);
WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
wl.acquire();
然后使用:
wl.release();
发布唤醒锁。
不要伪造添加:
<uses-permission android:name="android.permission.WAKE_LOCK" />
到清单!
答案 1 :(得分:2)
你没有。这将是快速耗尽手机电池的完美方式。如果手机处于睡眠状态,请让它睡眠,除非你有一个好的理由(在这种情况下,你将来使用AlarmManager进行一次性的叫醒)。
我不知道你想要实现什么,但你需要使用一种完全不同的方法。例如,网络发痒是一个好主意,假设您的应用只能使用2.2+。
答案 2 :(得分:1)
如果确实希望您的服务在设备锁定时每隔30秒运行一次,则必须使用ELAPSED_REALTIME_WAKEUP类型安排闹钟。但要注意,这肯定会使设备电池迅速耗尽!