手机锁定时,Android服务停止工作

时间:2010-11-09 22:25:54

标签: android

我有一个启动服务的应用程序。该服务有一个计时器,每隔30秒弹出一次通知。我注意到以下行为:

  • 如果屏幕打开,通知显示正常(即使应用程序在后台)
  • 如果屏幕关闭(通过电源按钮或单独),通知将不会显示
  • 如果屏幕关闭但是我正在运行调试,则显示

如何在关闭屏幕的情况下运行服务。

(实际应用程序仅检查是否应每30秒检查一次通知,但出于测试目的,上述方案是可以的)

谢谢!

3 个答案:

答案 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类型安排闹钟。但要注意,这肯定会使设备电池迅速耗尽!