为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕慕森 2019-10-26 11:19:53
我正在由c2dm触发的android应用中执行状态栏通知。如果应用程序正在运行,我不想显示通知。您如何确定该应用程序是否正在运行并且在前台?
查看完整描述

3 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

作出这样一个全局变量private boolean mIsInForegroundMode;和分配false的价值onPause()和true价值onResume()。


样例代码:


private boolean mIsInForegroundMode;


@Override

protected void onPause() {

    super.onPause();

    mIsInForegroundMode = false;

}


@Override

protected void onResume() {

    super.onResume();

    mIsInForegroundMode = true;

}


// Some function.

public boolean isInForeground() {

    return mIsInForegroundMode;

}


查看完整回答
反对 回复 2019-10-26
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

这是一篇很老的文章,但仍然很有用。以上接受的解决方案可能有效,但有误。正如Dianne Hackborn写道:


这些API并不是应用程序用来建立UI流程的基础,而是用于向用户显示正在运行的应用程序或任务管理器等。


是的,在内存中有一个列表保存这些事情。但是,它在另一个进程中处于关闭状态,由与您的线程分开运行的线程进行管理,而不是您可以依靠的东西(a)及时看到正确的决定,或者(b)在返回时保持一致。加上关于“下一步”活动去的决定总是在切换发生的那一刻完成,直到直到那个确切的点(活动状态被短暂锁定以进行切换),我们才能做出决定真的知道接下来会发生什么。


并且这里的实现和全局行为不能保证将来保持不变。


正确的解决方案是实施:ActivityLifeCycleCallbacks。


这基本上需要一个应用程序类,并且可以在其中设置处理程序以标识您在应用程序中的活动状态。


查看完整回答
反对 回复 2019-10-26
  • 3 回答
  • 0 关注
  • 1310 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信