Android:活动onviewcreated

时间:2014-08-26 10:45:05

标签: android android-activity create-view

我的活动在linearLayout(R.id.liste,在scrollView中)中有一些片段,需要一些时间来显示。 我将数组的大小减小到50但是它首先是350。 每个片段都是独立的,因为我需要它们来响应点击并弹出一个对话框。

以下是代码:

long start= System.currentTimeMillis();
for (Item item : dao.getList(triKey, start, end)) {
    ItemFragment fragment = ItemFragment.newInstance(item);
    FragmentTransaction fragTransaction = fragMan.beginTransaction();
    fragTransaction.add(R.id.liste, fragment);
    fragTransaction.commit(); 
}
long time = System.currentTimeMillis()-start;

真实问题:

我想显示一个循环progressBar,并在显示所有片段时将其设置为Gone,但是Activity没有onViewCreated()方法,是否有解决方法?

更深层次的理论问题:

如果我覆盖Activity.onCreateView()并使用System.currentTimeMillis(),我发现在Nexus 4上显示50个片段需要7.5秒(350个片段需要20秒)。 由于每个片段只容纳5个TextViews和1个ProgressBar并且花费10-15ms来创建它的视图,我很惊讶它需要这么长时间,为什么添加片段需要花费近6倍的时间而不是绘制它?

我不知道您需要回答哪一段代码,当然可以随意提问!

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

  

但是Activity没有onViewCreated()方法,有没有解决办法?

没有

  我做错了吗?

你真的需要重新考虑你的设计。您可以使用ListView Activity(不使用ScrollView)或ListView使用ListFragment轻松完成您所描述的内容ListView

Adapter在滚动时重新使用其列表项视图 - 如果您使用自定义{{1}},它将按您的需要运行,效率非常高。您可能还想查看“视图持有者”模式,以使滚动更加高效。