检查应用程序最小化/背景

时间:2014-06-26 13:02:54

标签: android android-activity service

我很惊讶!

因为无法识别当前在前台或后台的应用程序,

当我按下主页按钮并且我的应用程序不在前台时。之后我习惯检查在前台运行的应用程序。

public boolean isAppOnForeground()
    {

        ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
        if (appProcesses == null) { return false; }
        final String packageName = context.getPackageName();
        for (RunningAppProcessInfo appProcess : appProcesses)
        {
            if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND && appProcess.processName.equals(packageName)) { return true; }
        }
        return false;

    }

即使我的应用程序实际上不在前台,它也将始终返回 true

注意: 我的申请有2项服务, 从最近的任务列表中移除应用程序时,将取消1项服务(我已达到。) 当应用程序进入后台时,将取消2项服务。 (即检查wifi信号强度。)

如何知道应用是前景还是背景?

当应用程序不在前台时如何停止服务?

2 个答案:

答案 0 :(得分:3)

依靠Activity回调方法,例如onPause()onStop()onResume(),可以提供有关当前Activity状态的提示。 Activity reference对每种方法都给出了非常广泛的解释。

答案 1 :(得分:1)

尝试处理活动类的onpause()事件。当活动失焦时调用暂停。