-2

我开发了一款用于GPS跟踪的应用程序。它在前景中运行良好。它使用GPS /位置回调以及用于文本到语音,消息和心率监视器硬件的后台服务。问题在于Android操作系统在后台运行时偶尔关闭它。如果使用POWER按钮关闭屏幕,它会保持正常运行。如果HOME按钮用于关闭屏幕并运行其他应用程序,则Android有时会在几分钟后关闭应用程序,即使需要继续工作。有没有办法让应用程序运行isFinishing()/ onDestroy()或类似?正确捕获BACK按钮操作,给用户一个取消选项。谢谢,克里斯。Android在后台关闭应用程序,如何停止?

+1

使用粘滞服务进行后台更新。虽然自Android M以来,您必须查看Android Doze行为更改,这里是[Android N](https://developer.android.com/about/versions/nougat/android-7.0-changes.html),[Android O ](https://developer.android.com/about/versions/oreo/background-location-limits.html)。 – ADM

回答

1

为了避免这种情况你的应用程序应该启动一个前台服务(调用startForeground服务()),显示非dismissable通知并获得PowerManager.PARTIAL_WAKE_LOCK

它可以防止手机进入睡眠模式并阻止该系统可能会造成您的应用程序死机(100%无法避免),但这显然会对电池消耗产生重大影响。

+1

“它可以防止手机进入睡眠模式” - 不,它不会。 “WakeLock”可防止设备进入睡眠模式。前台服务不会自动获取“WakeLock”。 – CommonsWare

+1

好吧,我忘了唤醒锁...编辑。但在几个月前的一些测试中,它在wake_lock和wake_lock下都是一样的,但我仍然保留它以防万一。 –

相关问题