如何判断Android应用程序是否正在前台运行?

我正在由c2dm触发的android应用中执行状态栏通知。如果应用程序正在运行,我不想显示通知。您如何确定该应用程序是否正在运行并且在前台?



慕慕森
浏览 1311回答 3
3回答

繁星coding

作出这样一个全局变量private boolean mIsInForegroundMode;和分配false的价值onPause()和true价值onResume()。样例代码:private boolean mIsInForegroundMode;@Overrideprotected void onPause() {    super.onPause();    mIsInForegroundMode = false;}@Overrideprotected void onResume() {    super.onResume();    mIsInForegroundMode = true;}// Some function.public boolean isInForeground() {    return mIsInForegroundMode;}

慕侠2389804

这是一篇很老的文章,但仍然很有用。以上接受的解决方案可能有效,但有误。正如Dianne Hackborn写道:这些API并不是应用程序用来建立UI流程的基础,而是用于向用户显示正在运行的应用程序或任务管理器等。是的,在内存中有一个列表保存这些事情。但是,它在另一个进程中处于关闭状态,由与您的线程分开运行的线程进行管理,而不是您可以依靠的东西(a)及时看到正确的决定,或者(b)在返回时保持一致。加上关于“下一步”活动去的决定总是在切换发生的那一刻完成,直到直到那个确切的点(活动状态被短暂锁定以进行切换),我们才能做出决定真的知道接下来会发生什么。并且这里的实现和全局行为不能保证将来保持不变。正确的解决方案是实施:ActivityLifeCycleCallbacks。这基本上需要一个应用程序类,并且可以在其中设置处理程序以标识您在应用程序中的活动状态。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android