传统写法:1
需要在AndroidMenitfest.xml文件中添加以下权限
<uses-permission android:name="android.permission.GET_TASKS" />
/** *判断当前应用程序处于前台还是后台 */ 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; }
传统写法:2public static boolean isBackground(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses(); for (RunningAppProcessInfo appProcess : appProcesses) { if (appProcess.processName.equals(context.getPackageName())) { if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_BACKGROUND) { Log.i("后台", appProcess.processName); return true; }else{ Log.i("前台", appProcess.processName); return false; } } } return false; }
优雅版:private int appount = 0;声明一个变量。在开始的时候+1,在退出的时候-1;用来记录。
声明一个APP继承application,然后注册activitys的生命周期的回调,对activity的生命周期进行管理。
代码如下:
package test.ban.com.basekownledge;/**
* Created by apple on 16/8/26.
*/
import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
/**
* 作者:ban on 16/8/26 16:50
*/
public class App extends Application {
private static final String TAG = "App";
private int appount = 0;
@Override
public void onCreate() {
super.onCreate();
//注册activitys的生命周期的回调,对activity的生命周期进行管理
this.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
Log.e(TAG, "onActivityCreated: ");
}
@Override
public void onActivityStarted(Activity activity) {
Log.e(TAG, "onActivityStarted: ");
appount++;
}
@Override
public void onActivityResumed(Activity activity) {
Log.e(TAG, "onActivityResumed: ");
}
@Override
public void onActivityPaused(Activity activity) {
Log.e(TAG, "onActivityPaused: ");
}
@Override
public void onActivityStopped(Activity activity) {
Log.e(TAG, "onActivityStopped: ");
appount--;
if (appount == 0) {
Toast.makeText(App.this, "切入后台", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
Log.e(TAG, "onActivitySaveInstanceState: ");
}
@Override
public void onActivityDestroyed(Activity activity) {
Log.e(TAG, "onActivityDestroyed: ");
}
});
}
}