【问题标题】:Fragment initial take time when it load片段初始加载时需要时间
【发布时间】:2014-10-16 16:37:53
【问题描述】:

我遇到了片段加载问题。

步骤:我从 Activity 中调用一个片段,并在片段中启动 loadAsyncTask();用于从服务器获取数据。加载数据需要时间。我认为片段加载时速度很慢。 1.

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.list_fragment,
                container, false);

        init();
        setHasOptionsMenu(true);
        loadAsyncTask();
        return rootView;
    }

在谷歌搜索,我找到了解决方案。我在片段的 onActivityCreated() 中使用 loadAsyncTask() 方法,而不是在 onCreateView() 中使用

@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        loadAsyncTask();
    }

方法对吗?因为我的 ui 组件在 onCreateView() 的 init() 方法中初始化。

【问题讨论】:

    标签: android


    【解决方案1】:

    如果您的片段不依赖从互联网获取的数据,那么 AsyncTask 不会影响片段创建的速度。 AsyncTask 在单独的线程中运行,因此它不会阻塞执行 onCreateView() 的主线程。然而 onCreateView() 方法应该只负责创建和返回与片段关联的视图层次结构。

    【讨论】:

    • 现在在 onActivityCreated() 中使用 loadAsyncTask() 时它会变得更快。我的片段依赖于从 Internet 获取的数据,因为我在从 Internet 获取数据时更新 ui 组件。我按照下面的链接stackoverflow.com/questions/9237431/…
    • 这是一个很好的解决方案。只要您在 doInBackground() 方法中进行繁重的网络操作,该方法是一个单独的线程,并在主线程中更新您的 UI
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多