我不知道为什么,但我的服务(以 startService(Intent...) 开始)一段时间后一直关闭。我希望我的服务每 2 分钟检查一次 WiFiSLAM 的位置,因此 TimerTask 正在服务中运行。我意识到在关闭应用程序 (onDestroy) 并关闭屏幕后,我的服务正在关闭。
我已经阅读了关于 WakeLock 的信息并尝试了这个:
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
wakeLock.acquire();
但是还是不行。我不知道该怎么办。我只想让我的 Wifi 定位框架每两分钟在后台更新一次位置。
我还将 onStartCommand() 的返回值设置为 START_STICKY。可能它在后台运行,但是我在运行一段时间后看不到 LogCat 中的日志,这表明 indoorLocationManager 仍在捕获新位置。
有人有想法吗?
最佳答案
Android 会自动终止长时间(30 分钟到 1 小时)在后台运行的应用程序。
防止这种情况的唯一方法是将您的服务设置为前台服务
。
为此,您使用以下内容:
startForeground(messgae, notification);
这将显示永久通知,通知用户您的服务正在运行。
另一种选择是使用 AlarmManager
每 2 分钟启动一次 IntentService
。
问候。
关于Android:永远在后台运行服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13783424/