天天看点

Android判断应用程序处于前台还后台

/**
	 * 判断当前应用程序处于前台还是后台
	 */
	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;
		}