首页 > 代码库 > Android判断应用程序是否在前台

Android判断应用程序是否在前台

Android app中通过Broadcast Receiver接受Alarm的定时消息,以便发送Notification;这里发送Notification前要求app自身不在运行状态;检测app自身是否在前台的一个宗旨是:判断app所有的Activity是否有在前台的;在网上找了好长一段时间,发现一个个人觉得比较好的判定方法:

public boolean isAppForground(Context mContext) {
    ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningTaskInfo> tasks = am.getRunningTasks(1);
    if (!tasks.isEmpty()) {
        ComponentName topActivity = tasks.get(0).topActivity;
        if (!topActivity.getPackageName().equals(mContext.getPackageName())) {
            return false;
        }
    }
    return true;
}

注:getRunningTasks方法,Android Document中说API level 21开始该方法将deprecated, 暂时没去测试,不知道会有多大影响

Android判断应用程序是否在前台