1. 程式人生 > >如何判斷Activity是否在前臺顯示

如何判斷Activity是否在前臺顯示

activity acivity是否顯示

轉載請備註原文地址: https://www.niwoxuexi.com/blog/android00/article/223.html

我們在Android開發過程中,經常會判斷Activity是否在前臺顯示,來處理某些狀態,這裏謝了一個靜態方法,供大家參考。

方法一:用ActivityManager管理的Activity棧來操作

public class  CommonUtil{
    /**
     * 判斷某個Activity 界面是否在前臺
     * @param context
     * @param className 某個界面名稱
     * @return                  
     */
    public static boolean  isForeground(Context context, String className) {
        if (context == null || TextUtils.isEmpty(className)) {
            return false;
        }

        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningTaskInfo> list = am.getRunningTasks(1);
        if (list != null && list.size() > 0) {
            ComponentName cpn = list.get(0).topActivity;
            if (className.equals(cpn.getClassName())) {
                return true;
            }
        }

        return false;

    }
}

註意:在 AndroidManifest.xml 文件中添加權限,否則會報錯

<uses-permission android:name="android.permission.GET_TASKS"/>

方法二、 在OnResume,和OnPause中記錄一個變量

private bollean isFront = false;

@Override
public void onResume() {
    super.onResume();
    isFront = true;
}

@Override
public void onPause() {
    super.onPause();
    isFront = false;
}


本文出自 “全棧開發” 博客,請務必保留此出處http://andy2290.blog.51cto.com/13193207/1956023

如何判斷Activity是否在前臺顯示