我需要检测每次创建View
我所创建的活动是否已被推送到后台(即用户不再可见)。
我已经尝试覆盖onDetachedFromWindow()
,但它没有带来我希望看到的结果,尽管它official docs说的是什么:
protected void onDetachedFromWindow()
当从窗口分离视图时调用此方法。 此时它不再有用于绘制的表面。
我假设通过进入后台,View
将不再有用于绘制的表面(因为它现在由另一个View
覆盖)。但结果并非如此。
还有其他方法可以达到这个目的吗?
答案 0 :(得分:1)
在挖掘出View
的文档后,我终于找到了解决方案。
被推到后台并不意味着视图将从窗口中分离出来。 (很可能,但不是你/你的用户触发活动更改的第二个。)
当您的视图被另一个视图覆盖时(例如,当您更改活动时)始终会调用的一种方法是onWindowFocusChanged()
。
您可以依赖此选项来取消订阅Rx Observables
(就像我所做的那样)等等。
答案 1 :(得分:-1)
您需要覆盖活动上的onStop()方法。