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

检查Android应用程序是否在前台?

检查Android应用程序是否在前台?

当年话下 2019-07-19 18:45:44
检查Android应用程序是否在前台?对于这个问题,我做了很多回答,但这都是关于单一的活动。如何检查整个应用程序是否在前台运行呢?
查看完整描述

3 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

在.上所有活动扩展的基本活动:

protected static boolean isVisible = false;@Overridepublic void onResume() {
   super.onResume();
   setVisible(true);}@Overridepublic void onPause() {
    super.onPause();
    setVisible(false);}

每当您需要检查您的应用程序活动是否在前台时,只需检查 isVisible();

要理解这种方法,请检查并行活动生命周期的答案:活动并行生命周期


查看完整回答
反对 回复 2019-07-19
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

到目前为止,我发现的最整洁和不受欢迎的方法是这样做的,如下所示:

@Overridepublic boolean foregrounded() {
    ActivityManager.RunningAppProcessInfo appProcessInfo = new ActivityManager.RunningAppProcessInfo();
    ActivityManager.getMyMemoryState(appProcessInfo);
    return (appProcessInfo.importance == IMPORTANCE_FOREGROUND || appProcessInfo.importance == IMPORTANCE_VISIBLE)}

它只适用于SDK 16+。

编辑:

我从解决方案中删除了以下代码:

KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
// App is foreground, but screen is locked, so show notificationreturn km.inKeyguardRestrictedInputMode();

因为这样,如果屏幕锁定,就不会收到通知。我看了一下框架,其目的还不完全清楚。我会把它移走。检查进程信息状态就足够了:-)


查看完整回答
反对 回复 2019-07-19
  • 3 回答
  • 0 关注
  • 528 浏览

添加回答

举报

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