判断App是否处于前台

方法一:

  //当前应用是否处于前台
  private boolean isForeground(Context context) {
      if (context != null) {
          ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
          ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
          String currentPackageName = cn.getPackageName();
          if (!TextUtils.isEmpty(currentPackageName) && currentPackageName.equals(context.getPackageName())) {
              return true;
          }
          return false;
      }
      return false;
  }

需要权限:<uses-permission Android:name ="android.permission.GET_TASKS"/>

方法二:

//版本4.0以上,可以使用ActivityLifecycle, 在Application的onCreate()当中:
if (Build.VERSION.SDK_INT >= 14) {
    lifecycle = new SimpleActivityLifecycle();
    registerActivityLifecycleCallbacks(lifecycle);
}

public class SimpleActivityLifecycle implements Application.ActivityLifecycleCallbacks {

    private boolean isForeground = false;//应用是否处于前端

    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {

    }

    @Override
    public void onActivityStarted(Activity activity) {

    }

    @Override
    public void onActivityResumed(Activity activity) {
        isForeground = true;
    }

    @Override
    public void onActivityPaused(Activity activity) {
        isForeground = false;
    }

    @Override
    public void onActivityStopped(Activity activity) {

    }

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {

    }

    @Override
    public void onActivityDestroyed(Activity activity) {

    }

    public boolean isForeground() {
        return isForeground;
    }
}

猜你喜欢

转载自blog.csdn.net/lyabc123456/article/details/81297052