Android优化一:提纲
Android优化二:性能检测
Android优化三:内存优化
Android优化四:App启动速度优化
Android优化五:布局优化
Android优化六:性能优化
节制的使用Service
如果应用程序需要使用Service来执行后台任务的话,只有当任务正在执行的时候才应该让Service运行起来。
当启动一个Service时,系统会倾向于将这个Service所依赖的进程进行保留,系统可以在LRUcache当中缓存的进程数量也会减少,导致切换程序的时候耗费更多性能。
我们可以使用IntentService,当后台任务执行结束后会自动停止,避免了Service的内存泄漏。
当界面不可见时释放内存
当用户打开了另外一个程序,我们的程序界面已经不可见的时候,我们应当将所有和界面相关的资源进行释放。
重写Activity的onTrimMemory()方法,然后在这个方法中监听TRIM_MEMORY_UI_HIDDEN这个级别,一旦触发说明用户离开了程序,此时就可以进行资源释放操作了。
当内存紧张时释放内存
onTrimMemory()方法还有很多种其他类型的回调,可以在手机内存降低的时候及时通知我们,我们应该根据回调中传入的级别来去决定如何释放应用程序的资源。
避免在Bitmap上浪费内存
读取一个Bitmap图片的时候,千万不要去加载不需要的分辨率。可以压缩图片等操作。
HashMap 优化
用 Android Studio 写代码时,经常会提示对 HashMap 的警告优化,推举我们使用 SparseArray 等。
- SparseArray
SparseArray比HashMap更省内存,在某些条件下性能更好,主要是因为它避免了对key的自动装箱(int转为Integer类型),它内部则是通过两个数组来进行数据存储的,一个存储key,另外一个存储value,为了优化性能,它内部对数据还采取了压缩的方式来表示稀疏数组的数据。
SparseArray只能存储key为int类型的数据,同时,SparseArray在存储和读取数据时候,使用的是二分查找法。
应用场景:数据量不大,最好在千级以内 + key必须为int类型 - ArrayMap
如果key的类型已经确定为int类型,那么使用SparseArray,因为它避免了自动装箱的过程,如果key为long类型,使用LongSparseArray。
如果key类型为其它的类型,则使用ArrayMap。
部分来自:
From https://mp.weixin.qq.com/s/YVvV3-RUjbqYo-DYY3E6nA
网友评论