Android开发之多Fragment切换优化

前言:课程设计已经基本完成,但是在点击切换Fragment的时候总是感觉有点卡顿,第一次读取网络服务器数据就体现的特别明显,在本地的话也会稍微有一点卡顿,因为我引用了一个多Fragment的框架,强迫症的我看着就是不舒服,查看框架源码...,果然,框架犯了一个低级的错误:切换Fragment竟然都是用replace()方法来替换Fragment。


****切换Fragment的方法简介****
replace()
该方法只是在上一个Fragment不再需要时采用的简便方法
show() hide() add()
正确的切换方式是add(),切换时hide(),add()另一个Fragment;再次切换时,只需hide()当前,show()另一个


****看源码吧****

//错误的做法
//每次切换的时候,Fragment都会重新实例化,重新加载一边数据,这样非常消耗性能和用户的数据流量
public void switchFragment(Fragment targetFragment) {
    if (targetFragment == null)
      return;
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    //目标Fragment替换原来的Fragment
    transaction.replace(R.id.content, targetFragment);
    transaction.commit();
  }

//正确的做法
private void switchFragment(Fragment targetFragment) {
    FragmentTransaction transaction = getSupportFragmentManager()
            .beginTransaction();
    if (!targetFragment.isAdded()) {
        transaction
                .hide(currentFragment)
                .add(R.id.main_fragment, targetFragment)
                .commit();
        System.out.println("还没添加呢");
    } else {
        transaction
                .hide(currentFragment)
                .show(targetFragment)
                .commit();
        System.out.println("添加了( ⊙o⊙ )哇");
    }
    currentFragment = targetFragment;
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值