cpu优化,内存的优化,卡顿优化,启动优化的方式,其他的一些优化

cpu优化
1.主线程更新ui的时候,子线程不要抢夺cpu的占有权。
比如子线程里面读写大文件,或者操作数据库的时候操作大的对象。

2.设置布局的时候尽量减少层级的嵌套。尽量使用LineaLayout作为父布局容器,还可以使用meger标签来设置布局但是前提是要知道外层使用布局的类型,还可以使用viewstub设置布局,viewstub在布局没有内容显示的情况下是不会加载到父布局容器中的。设置Activity的背景为透明,布局容器在没有其他需求的情况下也要设置为透明,这样可以减少过度绘制。

3.可以使用include引用布局,使用include的好处不仅可以复用布局,在程序二次加载include布局的时候可以加载得更快。

4.加载数据条目过多的情况下可以使用分页。

5.大量创建动态对象的时候可以使用享元模式。即对象的复用。

6.请求网络多种类型的数据尽量合并为一个接口,避免多次请求网络。请求网络也是耗电的操作,这样做可以节省电量。 网络请求尽量做缓存操作。

7.涉及频繁创建销毁线程的操作,使用线程池来处理。因为创建和销毁线程是很耗性能的。

内存优化
1.bitmap的优化,加载bitmap的时候可以预先计算bitmap的大小。对bitmap进行采样率的压缩。可以设置bitmap的位深设置为RGB_565可以减少一半的内存占用。

2.使用service之后要及时关闭释放内存推荐使用IntentService。

3.使用完广播之后要及时取消注册。

4.UI界面不可见的情况下释放一些只有ui使用的资源。

5.系统内存不足的时候尽量释放非重要资源。

6.做内存缓存的时候可以使用软引用对象。

7.尽量使用一些谷歌推荐的数据结构,比如SparseArray、SparseBooleanArray、LongSparseArray,使用这些API可以让我们的程序更加高效。

8.字符串的拼接尽量不要使用加号连接符,推荐使用StringBuffer或者StringBulider

9.使用动画的时候要及时释放资源。

卡顿优化
1.主线程内不要做耗时的操作(读写文件,操作数据库,请求网络,耗时的计算,视频帧的获取等等)。
2.绘制view的时候不要频繁的创建动态对象。
3.设置子线程的优先级,避免抢占主线程的资源。
4.避免频繁创建对象导致频繁GC
5.避免绘制view的时候重复绘制背景。
6.scorllview嵌套recyclerview的时候recyclerview一次加载的项不应过多。
7.使用idleHandle加载

启动优化
使用idleHandle加载
异步加载
懒加载
延迟加载
onCareate onResume里面不要做耗时操作

其他的优化
方法具体实现的优化。如数据结构,算法的优化。

你可能感兴趣的:(学习日志,笔记)