Envrionment:Eclipse
语言:Java(Android)
我有一些问题,直到我在设备上测试我的应用程序之前我才意识到这一点。我一直以为即使手机正在睡觉,服务也会在后台持续运行。我发现事实并非如此,所以,我的问题是,一旦你唤醒你的设备,服务会再次启动吗?如果没有,我将如何使服务再次启动。
我是否能够每5分钟左右唤醒手机,只需运行我的服务,这将持续30秒到1分钟。然后让手机再次入睡?
提前致谢。
编辑:我对Android编程非常陌生,如果有人告诉我如何使用WakefulIntentService,我会非常感激。 我有一项服务,每隔一段时间都在搜索用户的GPS位置,当手机进入睡眠状态时,我希望我的服务仍然能够找到他们的位置。我将如何使用WakefulIntentService?我能否在这种情况下使用它。感谢。
答案 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
,这让我知道该怎么做。
再次感谢大家的帮助。