在android中,如何检测用户何时关闭应用程序?

在android中,如何检测用户何时关闭应用程序?,android,android-ondestroy,application-close,Android,Android Ondestroy,Application Close,我知道,与onCreate()不同,Application类没有onDestroy()方法。但我想知道我的应用程序何时关闭(或者在屏幕上不再可见)。毕竟,whatsapp和更多类似的聊天应用程序可以检测用户何时离开应用程序,并记录用户最后一次在线时间。我想实现一个类似的目标。此外,当应用程序被销毁时,我希望分离连接到firebase数据库的所有侦听器 我已经看过这个问题,但公认的答案是不可靠的。那么,对于我来说,onDestroy()的解决方法是什么呢。如果你说的是应用程序类(检测它何时被破坏)

我知道,与
onCreate()
不同,
Application
类没有
onDestroy()方法。但我想知道我的应用程序何时关闭(或者在屏幕上不再可见)。毕竟,whatsapp和更多类似的聊天应用程序可以检测用户何时离开应用程序,并记录用户最后一次在线时间。我想实现一个类似的目标。此外,当应用程序被销毁时,我希望分离连接到firebase数据库的所有侦听器


我已经看过这个问题,但公认的答案是不可靠的。那么,对于我来说,
onDestroy()
的解决方法是什么呢。

如果你说的是
应用程序
类(检测它何时被破坏)-这是不可能的,当
应用程序
被杀死时,开发者不应该(也不应该)有选择执行自己的代码(比如从头开始重新启动应用程序)

但你们谈论的是应用程序可见性,可能是屏幕上出现的任何
活动
——扩展
应用程序
类(并在清单中注册)并将
ActivityLifecycleCallbacks
与其他计数代码一起使用:
counter++
当任何
onActivityStarted
计数器--
onActivityStopped
时。另外,在活动停止时的
中,检查您的
计数器==0
,如果是,则所有
活动都在后台,因此应用程序在屏幕上不可见(但这并不意味着它已被销毁/杀死)


编辑:查看示例。或者检查支持类(它可能正在为您计算可见的
活动
,并且只有在所有活动都消失后才调用appbackground

您不需要对其进行
onDestroy
回调。您应该在
ProcessLifecycleOwner
onStop()中执行此操作。在应用程序销毁时,您的进程将在空闲情况下被销毁,所以不需要删除侦听器


onStop
中删除侦听器,然后在
onStart
中重新连接。您可以使用
ProcessLifecycleOwner
配置应用程序类,以使每个活动都获得这些回调。这就是它应该如何工作的,我猜如果应用程序在后台,你会弹出一个新消息的通知。结帐。

我想这对我来说很合适。我试试看。顺便说一句,这是androidx的链接