在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的链接