android activity启动优化方法

最近做一个项目,用的viewpage+fragment 模式,由于加载的fragment比较多,加上布局复杂,每次跳转activity的时候,总是会卡顿几秒钟,当然性能好的手机,情况会好很多,经过排查以及实验,记录下方法。

一般初始化都会在oncreate()方法中,首先找出哪些控件的初始化比较复杂,提取出来,activity在onresum,fragement 在可见的情况下初始化复杂的控件,那问题来了,每次布局可见时,不是每次都会初始化控件吗,也影响性能啊?没错,这时候我们需要搞一个Boolean flage = true;变量,例如  在 

onCreate(){
flage = false;
},
onResume(){
if(!flag){
//此处初始化操作
flag = true;
}},
这样只要没销毁,只会初始化一次,另外,和另一种方法联合使用,更会加快速度,onResume方法改一下:

onResume(){
if(!flag){
Looper.myQueue().addIdleHandler(new MessageQueue.IdleHandler() { //
@Override
public boolean queueIdle() {
//此处初始化操作
return false; //false 表示只监听一次IDLE事件,之后就不会再执行这个函数了.
}
});
flag = true;
}}
Looper.myQueue().addIdleHandler().这个函数用于给Looper中添加一个用于处理Looper空闲时的事件响应-Handle. Looper何时会空闲呢?答案就是当一个Activity的所有初始化的生命周期过程被执行完成,并且界面渲染也完成的时候,Looper里边就没有其他的消息了. 于是我们就可以开始进行初始化了.不早也不晚.

你可能感兴趣的:(android activity启动优化方法)