【问题标题】:Check generated ListView time检查生成的 ListView 时间
【发布时间】:2025-11-29 02:20:02
【问题描述】:

我想知道如何跟踪绘制/填充列表视图所花费的时间。我正在使用使用列表的自定义数组适配器。我正在考虑使用System.nanoTime()

我尝试了以下代码:

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    long startNano = System.nanoTime();
    View view = inflater.inflate(R.layout.trip_listview, container, false);
    ListView lv = (ListView) view.findViewById(android.R.id.list);
    TripsArrayAdapter tripsArrayAdapter = new TripsArrayAdapter(getActivity(), CachedData.getInstance().getTripsList());
    lv.setAdapter(tripsArrayAdapter);
    long endNano= System.nanoTime();
    System.out.println("Time create: "+(endNano-startNano));
    return view;
}

这是正确的方法吗?

【问题讨论】:

    标签: android performance listview android-adapter


    【解决方案1】:

    我不会依赖上面的代码,因为绘图不是在setAdapter 方法中完成的。我要做的是使用HierarchyViewer 并检查每个视图绘制和布局需要多少时间。

    debugging UI 上的开发者网站上有一篇很棒的文章,还有来自 Romain Guy 的 another article 处理 UI 性能。

    【讨论】:

    • 谢谢,我会检查这些链接。我使用 HierarchyViewer 改进了布局。但是为了绘制一个巨大的列表(1000+),我不认为它适用于 O(n) 线性增长?还是这样?
    • 不要忘记列表视图回收它的视图......如果你正确地实现了回收你不应该关心大数据项。