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);
可以打日志看一下,没毛病