fragment懒加载


public class fragment01 extends Fragment {

    private View view;
    private boolean isViUser;
    private boolean isFirst=true;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        if (view==null){
            view = inflater.inflate(R.layout.image_pop, container, false);
        }
        return view;
    }

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        isViUser=isVisibleToUser;
        if (isViUser&&view!=null){
            initData();//第一次进来不会在这里请求 因为view没有创建  第二次进来 会请求数据
        }
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        if (isViUser&&view!=null&&isFirst){
            isFirst=false;//第一次创建 需要 加载一次  但是等第二次进来 设置为false 显示的setUserVisibleHint 会请求一次 所以 这里在变为false 就不会重复加载了 you know?
            initData();
        }
    }

    private void initData() {

    }
}

 

### 实现Fragment懒加载的方法 在 Android 中,`Fragment` 的懒加载可以通过多种方式实现。当 `Fragment` 被创建并附加到活动 (`Activity`) 上时,默认情况下会立即初始化其视图和其他资源。然而,在某些场景下,可能希望延迟这些操作直到 `Fragment` 变得可见给用户。 对于使用 `FragmentPagerAdapter` 和 `ViewPager` 组合的情况,可以利用生命周期回调来控制何时真正启动数据获取或其他耗时的任务[^1]。具体来说: - 当页面首次被选中时调用 `setUserVisibleHint(boolean isVisibleToUser)` 方法;如果当前页变为可见,则参数为 true 否则 false。 ```java @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser && isViewInitiated){ loadData(); } } ``` 另一种常见的方式是在 `onHiddenChanged()` 函数里处理懒加载逻辑。这适用于那些已经在屏幕上显示过一次但是后来又被隐藏起来再重新显现出来的片段实例。一旦检测到状态变化为不再隐藏(`hidden==false`)就可以触发相应的业务流程了[^2]: ```java @Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); if (!hidden){ // 执行懒加载操作 lazyLoadData(); } } ``` 除了上述两种基本模式外,在更复杂的应用结构里面如多层嵌套布局(例如多个 `Fragment` 或者 `ViewPager`),开发者还需要考虑不同层次之间的交互影响以及如何有效地管理各个组件间的依赖关系[^3]。 为了确保最佳性能和用户体验,建议只在确实必要的时候才去请求网络或者读取本地存储中的大文件等内容,并且要合理安排好异步任务以免阻塞主线程造成界面卡顿现象发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值