0

我正在写一个服务,它保持在后台打开并记录用户操作。如何知道用户是否在Activity中触发了onDestroy而不是系统?

现在,如果用户通过按回退键或在最近的应用程序屏幕中将应用程序划掉,我也想完成后台服务,但是如果Android调用onDestroy,该服务仍应在后台运行的其他原因。

为此,我需要知道用户何时关闭活动或者它是否为android的代码的区别。

对于后退按钮,这是一个简单的修复方法,只需覆盖onBackpressed,一切正常,但不会调用,但是,如果用户将应用程序从最近的应用程序屏幕上滑过。

+0

使用标志来标识后备事件。 上的方向更改您将获得onConfigurationChanged系统调用。 同时从最近的屏幕或应用程序(进程)在后台中杀应用程序,您的应用程序服务onDestroyed将被调用。 –

回答

1

当onDestroy被调用时,你可以检查你的活动this.isFinishing()

查看更多此处Acrivity.onDestroy

+0

P.S.在onDestroy中停止服务并不是一个好主意,因为在活动销毁时不需要onDestroy调用 – MaxV

+0

谢谢我在阅读文档时忽略了这一点。另外,你的P.S.是什么意思?完成活动时,是否总是调用onDestroy()?我可能会在'onPause'上写'isFinishing()'来检查是否调用完成。 – Raeglan

+0

[link](https://developer.android.com/reference/android/app/Activity.html#onDestroy())在某些情况下,系统会简单地杀死活动的托管进程而不调用此方法(或任何其他方法),所以它不应该被用来做一些在这个过程结束之后仍然存在的事情。 停止服务的好地方是onStop()方法,并在与isFinishing()相关的onStart()方法中重新启动服务值 – MaxV

相关问题