android 判断应用是否在前台

android应用查看当前app是否在前台,偶然看到这个,自己就尝试了一下看看

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

它是跟剧你传入的上下文,找到当前am.getRunningTasks(1)传入的1是maxNum,你传几都可以,不过都是取第一个,然后根据这个task的最上面的activity找所属的packageName,如果跟本应用相同那就是在最上面了
使用这段代码需要一个权限的: uses-permission android:name=”android.permission.GET_TASKS”

Timer timer = new Timer();
    TimerTask timerTask = new TimerTask() {
        @Override
        public void run() {
            boolean isBg = DeviceUtils.isApplicationBroughtToBackground(MainActivity.this);
            if (isBg){
                Log.e(TAG,"application is background");
            }else {
                Log.e(TAG,"application is not background");
            }
        }
    };
    timer.schedule(timerTask,5000,5000);

可以打日志看一下,没毛病

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值