解决Fragment每次进入都加载的问题

1、首先了解一下fragment的生命周期
onCreate是指创建该fragment类似于Activity.onCreate,你可以在其中初始化除了view之外的东西,onCreateView是创建该fragment对应的视图,你必须在这里创建自己的视图并返回给调用者,例如
return inflater.inflate(R.layout.fragment_settings, container, false);。
super.onCreateView有没有调用都无所谓,因为super.onCreateView是直接返回null的
    由上可见fragment的view在从其他fragment切回来后都会被重新创建视图onCreateView,所以当我们在fragment含有比较复杂且加载数据量较耗时的时候便会在初始化view的时候变得很卡。
  所以我便将复杂的view单独拎出来放在oncreate内,只在父activity创建后初始化一次,然后将这个复杂的view再添加到fragment中。
下面是我的代码:
  private View vv;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        goodAdapter = new AdapterCursorGoodList(getActivity());
        getActivity().getSupportLoaderManager().initLoader(-1, null, praiseLoaderCallbacks);
        vv = LayoutInflater.from(getActivity()).inflate(R.layout.infos_content_item, null);
        goodLayout = (InfosListLayout) vv.findViewById(R.id.good_layout);// 解决了每次fragment onCreateView,此处只被new一次
    }
 
  private LinearLayout ll_container;// 这个容器是装goodLayout
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.infos_content, container, false);
            scrollView = (ScrollView) v.findViewById(R.id.newsScrollview);
        newsLoadMore = (TextView) v.findViewById(R.id.newsLoadMore);
        ll_container = (LinearLayout) v.findViewById(R.id.ll_container);
        ll_container.addView(vv);
。。。。。。。。
这个解决方案还不够好,因为第一次加载还是会卡,希望大家有更好的解决办法,欢迎指导
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值