我想使用Application.ActivityLifecycleCallbacks
来监控后端堆栈中有多少活动。我可以在onCreate / onDestroy中递增/递减计数器来处理这个吗?
答案 0 :(得分:3)
onDestroy NOT 保证每次活动被销毁时都会被调用。
如果用户点击返回以销毁它,将调用onDestroy 如果用户从最近的应用程序菜单中滑动应用程序,则不会调用onDestroy 如果应用程序崩溃,则确定是否会被调用(根据我的经验,它不会被调用)。
答案 1 :(得分:1)
onDestroy()是在Activity实例被销毁并从内存中完全删除之前调用的最终方法。在极端情况下,Android可能会终止托管Activity的应用程序进程,这将导致不调用OnDestroy。显然,大多数活动都不会实现此方法,因为大多数清理和关闭都是在OnPause和OnStop方法中完成的。 有关更多详细信息,请访问Android开发人员门户。 (https://developer.android.com/reference/android/app/Activity.html" Android开发者")
答案 2 :(得分:1)
当android破坏活动以节省内存时,是否总是调用onDestroy?
是
<强>文档强>
在您的活动被销毁之前收到的最后一个电话。这可能是因为活动正在完成(有人在其上调用finish()
,或者因为系统暂时销毁此活动实例以节省空间。您可以使用isFinishing()
来区分这两种情况方法
我想使用Application.ActivityLifecycleCallbacks来监控方式 后堆中有很多活动。我可以增加/减少 onCreate / onDestroy中的计数器来处理这个?
最好使用onStart()
和onStop()
方法进行计数,onCreate()不保证可见性。例如,如果某种方式阻止了onStart()
的发生。