有很多原因需要检测应用是否在前台。例如,作为触发GCM/C2DM推送通知的条件,许多应用程序都有充分的理由在前台和后台实现不同的行为。另一个原因可能是关闭消耗宝贵资源的服务,例如在后台任务中查询服务器。
要明确一点:我所看到的背景应用程序的定义是:没有任何活动调用
从另一方面来说 -
但是正如@Emil所说 - 这需要特殊权限,或需要一些棘手的逻辑,这很快就会变得难以维护,并且它闻起来像是一个糟糕的方法(尽管这是我现在正在做的事情,因为我没有更好的想法...)
我的问题基本上是:
要明确一点:我所看到的背景应用程序的定义是:没有任何活动调用
onStart()
方法,并且尚未调用onStop()
方法。那是因为活动只在其生命周期中对用户可见。从另一方面来说 -
似乎Google不希望应用程序对主页按钮做出反应(它不是API的一部分)
将对“根/主”活动上的
onBackPressed()
做出反应作为离开Activity
的指示器肯定不是好主意(因为许多用户使用主页按钮而不是返回按钮)API中没有允许确定应用程序是否在前台(根据我的定义...)的方法
但是正如@Emil所说 - 这需要特殊权限,或需要一些棘手的逻辑,这很快就会变得难以维护,并且它闻起来像是一个糟糕的方法(尽管这是我现在正在做的事情,因为我没有更好的想法...)
我的问题基本上是:
是否没有这样的API方法是有原因的?
考虑应用程序是否在前台不是一个好方法吗?
是否有其他方法可以知道应用程序是否在前台?