Q:如何判断App被切到了后台(比如按Home键)。
A:可以通过任务栈中顶部Activity的包名来判断,和App包名相同则表示App处于前台进程,否则处于后台进程。
/**
* 判断app是否处于前台
*/
public boolean isRunningForeground() {
ActivityManager activityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
if (activityManager != null
&& activityManager.getRunningTasks(1) != null
&& activityManager.getRunningTasks(1).size() > 0
&& activityManager.getRunningTasks(1).get(0) != null
&& activityManager.getRunningTasks(1).get(0).topActivity != null
&& TextUtils.equals(activityManager.getRunningTasks(1).get(0).topActivity.getPackageName(), getPackageName())) {
//顶部的activity包名和app包名相同,则app正处在前台
return true;
} else {
return false;
}
}