当设备休眠时,服务进入待机状态 - Android

时间:2013-02-15 23:44:25

标签: android android-wake-lock sleep-mode android-powermanager

Envrionment:Eclipse
语言:Java(Android)

我有一些问题,直到我在设备上测试我的应用程序之前我才意识到这一点。我一直以为即使手机正在睡觉,服务也会在后台持续运行。我发现事实并非如此,所以,我的问题是,一旦你唤醒你的设备,服务会再次启动吗?如果没有,我将如何使服务再次启动。

我是否能够每5分钟左右唤醒手机,只需运行我的服务,这将持续30秒到1分钟。然后让手机再次入睡?

提前致谢。

编辑:我对Android编程非常陌生,如果有人告诉我如何使用WakefulIntentService,我会非常感激。 我有一项服务,每隔一段时间都在搜索用户的GPS位置,当手机进入睡眠状态时,我希望我的服务仍然能够找到他们的位置。我将如何使用WakefulIntentService?我能否在这种情况下使用它。

感谢。

4 个答案:

答案 0 :(得分:10)

您需要握住处理器lock以保持服务正常运行

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "TAG");
wl.acquire();
// When you are done
wl.release();

如果您的服务使用Wi-Fi,则还需要另一个锁

WifiManager wm = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiLock= wm.createWifiLock(WifiManager.WIFI_MODE_FULL, "TAG");
wifiLock.acquire();

// When you are done
wifiLock.release();

请务必在清单

中添加android.permission.WAKE_LOCK

答案 1 :(得分:3)

  

我有一项服务,每隔一段时间就会搜索用户的GPS位置,当手机进入睡眠状态时,我希望我的服务仍然能够找到他们的位置。我将如何使用WakefulIntentService?我能否在这种情况下使用它。

WakefulIntentService在这里不合适,因为它的设计只是为了让设备在短时间内保持清醒以完成一些工作。它不是为了让设备在不确定的时间内保持清醒,例如获得GPS定位所需的时间。

我有a LocationPoller project可以更好地处理您的方案。

  

我是Android编程的新手

对于拥有Android体验级别的人来说,你想要做的事情并不合适。恕我直言。

答案 2 :(得分:0)

我不知道您的服务究竟在做什么,但如果将服务停止/上传到服务器,您可能需要考虑使用Problem

除非您需要精确的计时,否则系统负担比AlarmManager要小。

我正在做其他事情,你可能想看看Sync Adapter

无论如何,如果你真的想坚持使用AlarmManager,只要知道不精确重复已经比精确重复好很多。

答案 3 :(得分:-6)

我使用了AlarmManager,我看了WakefulIntentService,这让我知道该怎么做。 再次感谢大家的帮助。