setUserVisibleHint和onHiddenChanged使用場(chǎng)景

fragment切換的幾種方式:

  • 第一種用法:切換fragment
/**
使用replace方法
*/
private void showMyFragment(Fragment fragment) {
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.replace(R.id.layout_fragment, fragment);
        transaction.commit();
}

這種方法如果切換的fragment進(jìn)行請(qǐng)求網(wǎng)絡(luò)等會(huì)消耗流量和性能。

  • 第二種用法:add()、hide()、show()
    使用場(chǎng)景:add hide show進(jìn)行fragment切換的時(shí)候,所以按照google老大哥的方式,添加使用add,隱藏使用hide,需要判斷是否添加 如果添加直接show。
/**
     * 修改顯示的內(nèi)容,不會(huì)重新加載
     * newFragmeent 下一個(gè)fragment
     * currentFrament 當(dāng)前的fragment
     */
    private void switchFragment(Fragment newFragmeent) {
        if (newFragmeent != currentFrament ) {
            FragmentTransaction transaction = fragmentManager.beginTransaction();
            if (!newFragmeent.isAdded()) { // 判斷是否被add過(guò)
                // 隱藏當(dāng)前的fragment,將 下一個(gè)fragment 添加進(jìn)去
                transaction.hide(currentFrament).add(R.id.layout_content, newFragmeent).commit(); 
            } else {
                // 隱藏當(dāng)前的fragment,顯示下一個(gè)fragment
                transaction.hide(currentFrament).show(newFragmeent).commit(); 
            }
            currentFrament = newFragmeent;
        }
    }

使用add()、hide()、show()方法切換fragment不會(huì)走任何的生命周期 無(wú)法通過(guò)生命周期進(jìn)行刷新。

  • onHiddenChanged()
    @Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);

        if (hidden) {   // 不在最前端顯示 相當(dāng)于調(diào)用了onPause();
            //做一些事情
            return;
        }else{  // 在最前端顯示 相當(dāng)于調(diào)用了onResume();
           //數(shù)據(jù)刷新做一些自己的事情
        }
    }
  • setUservisibleHint()
    使用場(chǎng)景:當(dāng)fragment結(jié)合viewpager使用的時(shí)候 這個(gè)方法會(huì)調(diào)用
    這個(gè)方法是在oncreateView之前使用 不要使用控件
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (getUserVisibleHint()) {
       //界面可見(jiàn)
    } else {
        //界面不可見(jiàn) 相當(dāng)于onpause
    }
}

原文鏈接:https://blog.csdn.net/kristch_wu/article/details/80000148

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容