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

轉載請備註原文地址: 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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章