Android的一些优化方案

669 阅读3分钟

1.启动时间优化
Android 启动耗时主要发生在Application的onCreate()方法和主Activity的onCreate()方法中,主线程如果不能尽快的执行渲染UI的操作,就会给人一种启动慢的感觉。产生这种现象的原因主要是启动时,Application的onCreate()方法中和主Activity的onCreate()方法中有一些操作占用了主线程的资源,导致主线程花去了时间去执行这些操作,而使得不能在启动的时候尽快地去渲染UI。

这种问题的解决方法一般是:在Application的onCreate()方法中和主Activity的onCreate()方法中,去开启一个子线程,让一些操作去在子线程中完成,不要去抢占主线程的资源,让主线程主要去渲染UI,或者有些操作没有必要在初始化的时候立即执行,那么可以做一个延时操作,让主线程先把UI渲染出来,再去执行这些耗时操作。

2.UI优化
(1)UI布局层级尽量不要太深
因为UI布局层级太深的话会导致UI绘制时间过长,容易出现卡顿现象。一般来说,如果使用RelativeLayout和LinearLayout布局层级一样深,那么尽量使用LinearLayout来布局,因为使用RelativeLayout测量的时候会测量两次,比LinearLayout多测量一次,会多占用一些时间和多消耗一些资源。如果使用RelativeLayout和LinearLayout布局,LinearLayout布局会比较深的话,那么尽量使用RelativeLayout,一般来说,RelativeLayout布局比较灵活,相对于LinearLayou来说会减少布局层级。 也可以使用merge来优化布局层级。
检查布局层级深度可以使用HierarchyViewer,层级较深的可以进行优化一下

(2)使用viewSub来进行优化
对于那些不是一上来就要显示的UI,可以使用viewSub来进行加载。当这些UI还没有显示的时候,不会进行加载和初始化,只会对ViewSub进行加载初始化,而ViewSub是一个轻量级的view,加载它不太占用cup资源和内存资源。而它所代表的真正的UI只会在显示的时候才会加载进内存,这样就会使得所有的UI不是一次性加载进了内存,这样既节省了加载时间,有节省了内存资源。

(3)内存优化
当Android所需要的内存不足的时候,就会出现OOM异常,所有内存优化也十分重要。一般来说,导致内存不足的原因主要有内存泄漏,图片占用太多内存。
导致出现内存泄漏的几种原因主要是:
操作数据库,文件等资源流忘记了关闭
单例中持有了Activity的上下文
内部类持有了外部类的引用
handler在Acitivty销毁的时候没有调用removeMessageAndCallback(null)或者Hanlder没有定义成静态的
线程造成的内存泄漏 集合容器造成的内存泄漏

一般解决内存泄漏的方法主要有规范代码,再者使用LeakCanary来检测内存泄漏出现的地方,进行及时改正。

一般也会出现图片占用太多内存导致内存不够用的情况,对于我们使用的图片,我们要使用压缩工具进行压缩一下在使用。对于网络图片,则会使用LRU Cache来进行内存缓存和硬盘缓存。