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, 暂时没去测试,不知道会有多大影响

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。