Tal*_*nel 3 android application-lifecycle activity-lifecycle
检测应用程序是否在前台有很多原因.例如 - 作为GCM/C2DM推送通知的触发器 - 当应用程序是前台和后台时,许多应用程序将有充分的理由实现不同的行为.其他原因可能是 - 淘汰消耗宝贵资源的服务,例如在后台任务中查询服务器.
需要明确的是:后台app的定义(我认为)是:
应用程序,它没有调用任何活动onStart()方法,也没有调用onStop()方法.那是因为活动只在那个时候在生命周期中对用户可见.
从另一方面 -
似乎Google不希望应用程序对主页按钮作出反应(它不是API的一部分)
onBackPressed()对"root/main"活动作出反应作为指示离开Activity肯定不是一个好主意(因为很多用户使用主页按钮,而不是后退按钮)
API中没有方法可以确定app是否为前景(根据我的定义..)
如果我没有错过API中的某些内容,而且确实如此 - 为什么没有原因可以轻松确定应用程序是否为前景???? !!!!
我知道我可以做的是确定应用程序是否为前景在此主题中描述 - 如何检测Android应用程序何时进入后台并返回到前台
但正如@Emil所说 - 它需要特殊许可,或者需要一些棘手的逻辑,这些逻辑很快就会成为维护的问题,并且它闻起来像是糟糕的方法(虽然这就是我现在正在做的事情,因为我没有更好的想法. ..)
我的问题基本上是:
有充分理由没有这样的API方法吗?
是否考虑应用程序是否为前景是一种不好的方法?
有没有其他方法可以知道应用程序是否是前景?