/**
* 判断当前应用程序处于前台还是后台
*/
public static boolean isApplicationBroughtToBackground(final Context context) {
ActivityManager am = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName())) {
return true;
}
}
return false;
}
继承Activity的,重写Activity的onStop方法,代码如下:
public class BaseActivity extends Activity {
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
boolean b = Utils.isApplicationBroughtToBackground(this);
if (b) {
Toast.makeText(this, "当前应用处于后台", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "当前应用处于前台", Toast.LENGTH_SHORT).show();
}
}
}
后面的所有Activity全部继承BaseActivity,在这些activity中重写onResume方法,在onResume中判断app是否从后台切换到前台,
@Override
protected void onResume() {
super.onResume();
/**
* 用静态变量isApplicationBroughtToBackground 保存onStop中判断的是否处于后台的结果
*/
if (C.isApplicationBroughtToBackground) {
Toast.makeText(this, "从后台切换回前台", Toast.LENGTH_SHORT).show();
C.isApplicationBroughtToBackground = false;
}