android项目优化(一)-DelayLoad

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实现短暂的延时加载,优化了项目的启动时间

你可能感兴趣的:(android项目优化(一)-DelayLoad)