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