Android 优化Fragment防止页面多次inflate

本文介绍了Android中Fragment的高效使用方法,包括如何管理Fragment的生命周期、避免内存泄漏等问题,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 3.0开始Fragment多次受到广泛关注,是的页面开发更加方便。

FragmetnManager+FragmentTransaction+Fragment+FragmentActivity是4个永远离不开的组件。因此来说,开发难度有所提升的同时,效率问题也成为了重点考虑的。
开发时经常遇到的Fragment问题有:管理,事务,添加,移除,通信,回退栈。Fragment的效率问题发生的原因是FragmentManager设计并不完美造成的。FragmentManager只做了一半工作,剩下的一半管理工作需要由开发人员来实现。

开发Fragment需要注意一下几点:

  1. 如果Fragment页面只出现一次,类似欢迎界面的话 使用 replace+不断新建Fragment方法即可

  2. 如果使用Fragment+BackStack,不要使用replace,应该使用add+remove+popBackStack+addToBackStack+hide+show

  3. 如果是做Tab页面,确切的说你还需要定义至少一个List<Fragment> fragmentList。

    将初始化完毕的所有Fragment加入fragmentlist,然后使用 add+attach+detattch方法进行管理,add负责添加,其他2个方法负责切换,这样效率特别好,防止了Fragment的叠加。

  4. Fragment的内部优化,依据Fragment的生命周期,onCreateView和onDestroyView会被反复调用,因此需定义一个全局的contenrView优化如下

private View contentView=null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    if (contentView==null){
        contentView=inflater.inflate(R.layout.testlayout, container, false);
    }else{
        return contentView;
    }
    return super.onCreateView(inflater, container, savedInstanceState);
}

@Override
public void onDestroyView() {
    //移除当前视图,防止重复加载相同视图使得程序闪退
    ((ViewGroup)contentView.getParent()).removeView(contentView);
    super.onDestroyView();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值