如何辨别谁从你的活动中偷走了焦点

时间:2014-04-08 20:14:33

标签: android android-activity

由于我无法控制的原因(所以请不要"你做错了#34;回复),我的Android应用需要很好地播放非常,即一个用户点击主页按钮,我的应用程序需要离开并释放所有资源(这是heayy,超过1GB RAM消耗等)。似乎在onPause()中调用finish()可以解决问题,但问题是:onPause()和onStop()在我开始自己的活动时也被调用,例如:一个偏好活动,我只想回归。

所以,我的问题是:如何确定失去焦点的原因?我可以想到两个选项,它们都不漂亮:

  1. 保持状态,即新活动设置一些全局标记,我可以在"覆盖"活动所以当onStop()被调用时它不会停止。令人讨厌,因为我的每一项新活动都必须这样做。
  2. 使用ActivityManager检查顶级活动,如果它是我的一个,不要自杀。也许更好,但文档严重不鼓励使用ActivityManager来处理这类内容。
  3. 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

欢迎您use onUserLeaveHint()。它可能涵盖某些情况(例如,HOME),但不是全部(例如,来电)。

  

请不要“你做错了”回复

恕我直言,“超过1GB的RAM消耗”已经为Play Store应用程序“做错了”。专业应用程序(例如,特定的企业方案,专用硬件)可能能够侥幸成功。

答案 1 :(得分:0)

选项1的一种方法是使用Application.registerActivityLifecycleCallbacks来减少实施和维护的烦恼。至少通过这种方式,您不必在多个类中多次实现此逻辑,或者不必要地将您的活动强制转换为单个不相关的基类。

并非我必须支持此选项。另请注意,您需要API 14+。