DelayLoad
要点:Delay时机
应用启动的时候,要等两次 performTraversals 都执行完成之后才会显示第一帧
所以我们必须要在performTraversals之后延迟同时距离其时间不能太久预防闪屏与过长的白屏时间出现
//在全局初始化handler和runnable对象
private Handler myHandler = new Handler();
private Runnable mLoadingRunnable = new Runnable() {
@Override
public void run() {
init();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_project);
getWindow().getDecorView().post(new Runnable() {
@Override
public void run() {
myHandler.post(mLoadingRunnable);
}
});
}
代码追溯
第一步:Activity.onCreate –> Activity.onStart –> Activity.onResume
第二步:ViewRootImpl.performTraversals –>Runnable
第三步:Runnable –> ViewRootImpl.performTraversals
第四步:ViewRootImpl.performTraversals –> UpdateText
第五步:UpdateText
如此我们就实现在performTraversals实现短暂的延时加载,优化了项目的启动时间
网友评论