[英]Speeding up complex Android View Inflation
我有一个相对较大的XML布局(38 kB,600行),层次结构如下:
<ScrollView>
<LinearLayout>
<TabHost>
<LinearLayout>
<FrameLayout> //tab widget
<LinearLayout> //tab content
<LinearLayout> //section
<TextView> //section name
<LinearLayout orientation="horizontal"> //item 1 box
<TextView> //item 1 title
<Spinner> //item 1 picker
</LinearLayout>
<LinearLayout> //item 2 box
<TextView> //item 2 title
<Spinner> //item 2 picker
</LinearLayout>
... //18 other items
</LinearLayout>
... //4 other sections with 15 items each
</>
这是一个数据输入表单,必须包含许多项,而我现在能做的最好的事情就是使用“ Loading ...”对话框包装setContentView
并将数据加载到AsyncTask中的微调器中。
主题的大量使用是否也会减缓视图膨胀? View Inflater不需要查看已加载的theme.xml,但是如果我将主题内联到布局xml中,它也会大大增加XML的大小,从而减慢解析器的速度。
我可以做些什么来简化布局,使其加载速度至少快两倍吗? 我在想,我可能会尝试摆脱水平的LinearLayouts,并使用TableLayout构建“部分”。
首先,三个一般性评论:
RelativeLayout
替换嵌套的LinearLayouts
。 layout_opt
工具可获得有关布局优化的一些建议。 现在,有关#1的更多信息……您是否考虑过编写自己的布局? 乍一看听起来很复杂,但有时可以极大地提高版图性能。 例如,如果RelativeLayout
不到目的,则可以将Linear-Frame-Linear-Linear链组合到单个自定义布局中。
最后,您的标签指示符是否可以滚动是有原因的吗? 这似乎是一个导航/ UX问题。
我唯一想做的就是将您的视图分解为几个不同的部分,并在用户到达该部分时分别为每个视图充气。 不知道这是否有帮助,但好运。
也可能有助于查看traceview中的那部分代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.