检查Android应用程序是否位于前台的最佳方法是什么?

net*_*ein 3 android

我有一个使用AsyncTasks对服务器进行REST调用的应用程序.每当AsyncTask完成时,它都会:显示错误对话框/调用下一个活动(如果应用程序在前台)或什么也不做(应用程序在后台).

我这样做是为了避免在将应用程序发送到后台后弹出一个活动.

我见过一些实现:

  1. 检查android应用程序是否在前台?
  2. 从后台任务或服务确定当前前台应用程序

目前我正在使用另一个,甚至更简单:

  • 每个活动的onResume我将全局变量设置为FOREGROUND
  • onPause每个活动我将全局变量设置为BACKGROUND

你会推荐哪个?

PS我知道这个视频中描述的REST调用的最佳实践https://www.youtube.com/watch?v=xHXn3Kg2IQE&list=PL73AA672847DC7B35,在我的具体情况下,这种方法似乎更合适.

Sha*_*wat 7

private boolean isAppForground() {

        ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        List<RunningAppProcessInfo> l = mActivityManager
                .getRunningAppProcesses();
        Iterator<RunningAppProcessInfo> i = l.iterator();
        while (i.hasNext()) {
            RunningAppProcessInfo info = i.next();

            if (info.uid == getApplicationInfo().uid && info.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) 
                {
                    return true;
               }
           }
        return false;
    }
Run Code Online (Sandbox Code Playgroud)