zoukankan      html  css  js  c++  java
  • Android开发之多Fragment切换优化

    前言:

    有时候Activity里面或者大Fragment里面切换小fragment的时候,会出现卡顿现象,尤其是小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();
      }

    //优化的做法
    Fragment currentFragment;//这里currentfragment在下面方法可能会报空指针,请自行处理
    private void switchFragment(Fragment targetFragment) {
        FragmentTransaction transaction = getSupportFragmentManager()
                .beginTransaction();
        if (!targetFragment.isAdded()) {
            transaction
                    .hide(currentFragment)
                    //add也是一种加载方式,并不是单纯的show
                    .add(R.id.main_fragment, targetFragment)
                    .commit();
            System.out.println("还没添加呢");
        } else {
            transaction
                    .hide(currentFragment)
                    //show出来
                    .show(targetFragment)
                    .commit();
            System.out.println("添加了( ⊙o⊙ )哇");
        }
        currentFragment = targetFragment;
    }
    

    ****注意事项****

    1. 上面的currentFragment在使用时需在方法里加逻辑判断,避免空指针。具体需要结合个人使用场景。

    2. show出来的fragment在获取焦点时可能出现问题,而add出来的获取焦点没问题。也需要自己处理。

  • 相关阅读:
    javascript获取客户端网卡MAC地址和IP地址和计算机名
    Spring 架包功能详解
    MyEclipse安装插件的另一种方法
    (转载)Struts Spring Hibernate (SSH) 整合实例
    jsp 输出流写中文出现乱码的解决办法
    通过Ssh协议连接到服务器执行执行的指令
    贝叶斯过滤算法
    IntelliJ IDEA 9.0.3配置tomcat5
    (spring+hibernate)java.lang.NoSuchMethodError
    struts1.2总结
  • 原文地址:https://www.cnblogs.com/JasonLGJnote/p/11965421.html
Copyright © 2011-2022 走看看