Android:永远在后台运行服务

标签 android

我不知道为什么,但我的服务(以 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/

相关文章:

java - 无法比较类型错误 : Object and int in Telegram

Android SupportMapFragment.getMap() 返回 null

android - 尽管对象存在 Kotlin\Room,SELECT 查询返回 null

android - 登录/重试失败时的 Google Play 游戏服务异常( Activity 生命周期)

android - 结合使用ProgressDialog和线程时,应用程序因方向更改而崩溃

android - 我们可以在 Sqlite 数据库中使用 Guid 作为主键吗

android - 如何使用我的 Android 应用程序将照片发送到 Instagram?

android - Appcelerator titanium - 带进度条的闪屏

android - 上面的layout_above坏了吗?这个简单的布局让我发疯

android - Phonegap/Pushwoosh/Android - 推送通知不起作用