Android优化——UI优化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android优化——UI优化相关的知识,希望对你有一定的参考价值。
使用ViewStub
延迟加载
1.ViewStub
延迟加载
ViewStub是一个不可见的,大小为0的View,最佳用途就是实现View的延迟加载,在需要的时候再加载View,可Java中常见的性能优化方法延迟加载一样。
当调用ViewStub的setVisibility函数设置为可见或则调用inflate初始化该View的时候,ViewStub引用的资源开始初始 化,然后引用的资源替代ViewStub自己的位置填充在ViewStub的位置。因此在没有调用setVisibility(int)或则 inflate()函数之前ViewStub一种存在组件树层级结构中,但是由于ViewStub非常轻量级,这对性能影响非常小。 可以通过ViewStub的inflatedId属性来重新定义引用的layout id。 例如:
- xml
<ViewStub android:id="@+id/stub" android:layout_width="match_parent" android:layout_height="match_parent" android:inflatedId="@+id/subTree" android:layout="@layout/activity_viewstub_item"/>
- java
//获取到viewstub final ViewStub stub = (ViewStub) findViewById(R.id.stub); //测试用inflate()填充布局 Handler handler = new Handler() { @Override public void handleMessage(Message msg) { View view = stub.inflate(); } }; handler.sendEmptyMessageDelayed(1, 7000);
我这里间隔了一段时间去调用了
stub.inflate();
方法,加载布局,我们这里就不用再去findViewById去加载view了
- 效果
以上是关于Android优化——UI优化的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段