【发布时间】:2012-12-12 05:51:15
【问题描述】:
检测应用程序是否在前台有很多原因。 例如 - 作为 GCM/C2DM 推送通知的触发器 - 当应用程序处于前台和后台时,许多应用程序将有充分的理由实施不同的行为。 其他原因可能是 - 关闭消耗宝贵资源的服务,例如在后台任务中查询服务器。
明确一点:后台应用的定义(我认为)是:
没有任何活动被调用 onStart() 方法的应用程序,并且还没有调用 onStop() 方法。
这是因为只有在那个时候,用户才能在其生命周期中看到活动。
另一方面——
似乎 Google 不希望应用程序对主页按钮做出反应(它不是 API 的一部分)
对“root / main”活动上的
onBackPressed()做出反应,作为离开Activity的指标当然不是好主意(因为很多用户使用主页按钮,而不是返回按钮)API 中没有方法可以确定应用程序是否为前台(根据我的定义..)
如果我没有错过 API 中的某些内容,而且确实如此 - 为什么没有理由轻松确定应用程序是否是前台????!!!!!!
我知道我能做些什么来确定应用程序是否在前台在此线程中进行了描述 - How to detect when an Android app goes to the background and come back to the foreground
但正如@Emil 所说 - 它需要特殊许可,或者需要一些棘手的逻辑,这些逻辑很快就会变得难以维护,而且它闻起来像是不好的方法(尽管这就是我现在正在做的事情,因为我没有更好的主意...)
我的问题基本上是:
没有这样的 API 方法有充分的理由吗?
考虑应用程序是否在前台是一种不好的方法?
有没有其他方法可以知道应用程序是否在前台?
【问题讨论】:
标签: android activity-lifecycle application-lifecycle