Android监听程序进入后台,或者恢复到前台

来源:互联网 发布:java prim算法 编辑:程序博客网 时间:2024/05/22 11:37

让app中所有的activity继承与一个公共的activity(例如:BaseActivity),然后在BaseActivity的onStop()中判断当前程序是否处于后台

[java] view plain copy

/**     * 文件名:BaseActivity.java     * 版本号:          * 日期:2012-6-20   * 创建人:  * Copyright wadata 版权所有  * 变更:  */  package com.wadata.mobilefollowup.view.base;  import java.util.List;  import android.app.Activity;  import android.app.ActivityManager;  import android.app.ActivityManager.RunningAppProcessInfo;  import android.content.Context;  /**  * 名称:BaseActivity   * 描述:   * 创建人:   * 日期:2012-6-20 下午5:53:35   * 变更:  */  public class BaseActivity extends Activity {          @Override          protected void onStop() {                  // TODO Auto-generated method stub                  super.onStop();                  if (!isAppOnForeground()) {                          //app 进入后台                          //全局变量isActive = false 记录当前已经进入后台                  }          }          @Override          protected void onResume() {                  // TODO Auto-generated method stub                  super.onResume();                  //if (!isActive) {                          //app 从后台唤醒,进入前台                          //isActive = true;                  //}          }          /**          * 程序是否在前台运行          *           * @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;          }  }  
0 0