android 判断应用程序在前台还是在后台运行

来源:互联网 发布:乐清知临学校学费价格 编辑:程序博客网 时间:2024/05/04 20:27

android 判断应用程序在前台还是在后台运行

MainActivity

import java.util.List;import android.app.Activity;import android.app.ActivityManager;import android.app.ActivityManager.RunningAppProcessInfo;import android.content.Context;import android.os.Bundle;/** * 判断应用程序在前台还是在后台运行 */public class MainActivity extends Activity {    private Boolean isActive;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        isActive = isAppOnForeground();    }    @Override    protected void onResume() {        super.onResume();        if (!isActive) {            // app 从后台唤醒,进入前台            isActive = true;            System.out.println("APP foreground");        }    }    @Override    protected void onStop() {        super.onStop();        if (!isAppOnForeground()) {            isActive = false; // 全局变量 记录当前已经进入后台 app 进入后台            System.out.println("App back");        }    }    /**     * 程序是否在前台运行     * @return     */    public boolean isAppOnForeground() {        // Returns a list of application processes that are running on the device        ActivityManager activityManager = (ActivityManager) getApplicationContext()                .getSystemService(Context.ACTIVITY_SERVICE);        String packageName = getApplicationContext().getPackageName();        List<RunningAppProcessInfo> appProcesses = activityManager                .getRunningAppProcesses();        if (appProcesses == null){            return false;        }        for (RunningAppProcessInfo appProcess : appProcesses) {            // The name of the process that this object is associated with.            if (appProcess.processName.equals(packageName)                    && appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {                return true;            }        }        return false;    }}

源码地址
http://download.csdn.net/detail/u012184853/9488895

1 0
原创粉丝点击