【问题标题】:Android: inflate layout multiple times causes performance issuesAndroid:多次膨胀布局会导致性能问题
【发布时间】:2014-05-22 16:25:13
【问题描述】:

我在一个片段中有一个水平滚动视图,我在 ActivityCreated 方法的循环中多次膨胀相同的布局(即大约 300 次)。

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

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

    for (int i = 0; i < myData.size(); i++) {

        View view = getActivity().getLayoutInflater().(R.layout.item, null);
        parentLayout.addView(view, params);
    }
}

我注意到这个循环的一些膨胀性能问题,即在显示片段之前存在延迟。

不确定解决这个问题的最佳方法是什么,以及在一个循环中膨胀多个布局的最佳过程是什么?

如果我可以异步执行,那可能是一种选择?

【问题讨论】:

    标签: android performance android-layout android-fragments android-scrollview


    【解决方案1】:

    这正是您应该使用AdapterView 的情况。在这种情况下,ListView 可能是最合适的。它做了很多聪明的事情,例如仅在视图可见时创建视图,以及在视图滚动到可见性时回收视图。

    【讨论】:

    • 是的,但我需要水平滚动功能以及我的水平滚动视图在垂直滚动视图内的事实
    • 在你想要水平滚动的情况下,ViewPager 是最合适的。如果您对直接类似于 ListView 的东西一无所知,那么 GitHub 上有几个 Horizo​​ntalListView 实现。在任何一种情况下,为每个数据项创建一个视图并将它们全部放在水平滚动视图中都是错误的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    相关资源
    最近更新 更多