检测应用程序是否处于前景的原因有很多。例如,作为GCM/C2DM推送通知的触发器,很多应用程序在执行应用程序前台和后台的不同行为时都会有很好的理由。 其他原因可能是 - 打击耗费宝贵资源的服务,例如查询后台任务中的服务器。确定是否在前台应用程序 - 是否皱眉?
只要是明确的:定义(在我看来)的后台程序是:
应用程序,它没有它的活动被调用的方法onStart()
,却没有援引onStop()
方法。这是因为活动仅在当时在其生命周期中对用户可见。
从另一方面 -
似乎是谷歌不希望应用到home键的反应(这不是API的一部分)
反应到
onBackPressed()
上“根/主“活动作为离开的指示器Activity
当然不是好主意(因为很多用户使用主页按钮,而不是后退按钮)API中没有方法允许de termine如果应用程序是前景(根据我的定义..)
,如果我没有错过API的东西,它是真正的情况 - 为什么没有为什么容易确定该应用程序是前景还是没有???? !!!!
什么,我知道我可以做以确定是否前台的应用在这个线程描述 - How to detect when an Android app goes to the background and come back to the foreground
但@Emil说 - 它需要特殊的权限,或者需要一些棘手的逻辑的,其速度非常快成为问题保持,它闻起来像坏的做法(虽然这是我在做什么,现在,因为我没有更好的主意......)
我的问题基本上都是:
有没有这样的API方法从好的理由?
考虑到应用程序是否为前景是一种不好的方法?
是否有任何其他方式知道应用程序是否为前景?
你的回答确实在我的脑海中有所作为......我没有想到将有序广播作为第二种情况的解决方案。对于这种情况看起来很完美。关于第一种情况 - 我不熟悉 - onUserLeaveHint()方法。很高兴知道它存在,但正如你所说 - 它仍然没有涵盖所有..静态变量表明开始和不停止的活动的数量是我在做什么,并猜测在你的建议后,我将与此生活在一起解决方案没有感觉它这样一个不好的解决方案.. :) –