Android 判斷Fragment是否可見

目錄

 

一、Fragment 對用戶可見的必要條件

二、舉例說明

2.代碼:

2.1 代碼介紹

2.2 各種狀態的log

2.2.2 滑動到tab2視頻

2.2.3 回到桌面

2.2.3 從桌面返回程序

2.2.4 從tab2視頻滑到到tab1圖片

2.2.5 從tab1圖片進入其他activity


一、Fragment 對用戶可見的必要條件

fragment 是否對用戶可見,依賴於下面三個方法:

getUserVisibleHint

onResume

onStop

用戶可見:getUserVisibleHint()返回true 並且 onResume剛剛調用了

二、舉例說明

1. 一個Activity,四個fragment,依次是圖片、視頻、音頻、文件

  

2.代碼:

2.1 代碼介紹

代碼分三步

 1. 本地變量,用於記錄狀態

 2. 自定義方法,用於判斷fragment真實展現,不要用其提供的isVisible()方法

3. demo 打印日誌,用於講解


    // 1. 本地變量,用於記錄狀態
    private String mName;
    private boolean mResume = false;// 標記onResume是否被剛剛調用

    // 2. 自定義方法,用於判斷fragment真實展現,不要用其提供的isVisible()方法
    public boolean isRealVisible(){
        return getUserVisibleHint() && mResume;
    }

    // 3. demo 打印日誌,用於講解
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        Log.e("TestFragment", "setUserVisibleHint mName="+ mName +" isVisibleToUser:"+isVisibleToUser+"\tisVisible:"+isVisible()+"\tisRealVisible:"+isRealVisible());
    }

    @Override
    public void onResume() {
        super.onResume();
        mResume=true;
        Log.e("TestFragment", "onResume  mName="+mName+"\tisVisible:"+isVisible()+"\tisRealVisible:"+isRealVisible());
    }

    @Override
    public void onStop() {
        super.onStop();
        mResume=false;
        Log.e("TestFragment", "onStop  mName="+mName+"\tisVisible:"+isVisible()+"\tisRealVisible:"+isRealVisible());
    }

2.2 各種狀態的log

2.2.1 進入Activity

  1. Activity顯示加載前兩個fragment:圖片、視頻

  2. 之後圖片調用setUserVisibleHint(true),

  3. 最後分別調用圖片、視頻的onResume

注意:此時系統的 isVisible 返回了true

2.2.2 滑動到tab2視頻

1. Activity先加載tab3音頻,並調用setVisibleToUser, 設置音頻爲false、圖片爲false、視頻爲true

2.調用音頻的onResume

2.2.3 回到桌面

調用已加載fragment的onStop方法

2.2.3 從桌面返回程序

調用已加載fragment的onResume方法

2.2.4 從tab2視頻滑到到tab1圖片

僅僅調用了視頻、圖片的setVisibleToUser方法,視頻爲false,圖片爲true

2.2.5 從tab1圖片進入其他activity

調用已加載fragment的onStop方法

2.2.6 從其他activity返回tab1圖片

調用已加載fragment的onResume方法

2.2.7 從tab1圖片,點擊tab4文件進入tab4

1. Activity先加載tab3音頻,並調用setVisibleToUser, 設置文件爲false,音頻爲false、圖片爲false、文件爲true

2.調用視頻的onResume

 

 

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