Android

个人Android学习总结


Activity 启动延时加载方案

<p>从我们Application开始到首页显示出来,这个过程,我们应该注意一些什么,将这个过程细分一下,会有下面的时间点需要注意。</p> <p>Application的构造器方法——&gt;attachBaseContext()——&gt;onCreate()——&gt;Activity的构造方法——&gt;onCreate()——&gt;配置主题中背景等属性——&gt;onStart()——&gt;onResume()——&gt;测量、布局、绘制显示在界面上。</p> <p>因为上面这些阶段全部都是在主线程中执行的,任何不经意的操作都可能拖慢应用的启动速度。所以我们不应在Application以及Activity的生命周期回调中做任何费时操作,具体指标大概是你在onCreate,onResume,onStart等回调中所花费的总时间最好不要超过400ms,否则用户在桌面点击你的应用图标后,将感觉到明显的卡顿。但是有些不得以的任务又必须在UI显示之前执行。所以我们要将任务划分优先级。</p> <p>优先级为1的在应用启动时,就开始加载 优先级为2的在首页渲染完成后,开始加载 优先级为3的在首页渲染完成后,延迟加载 对于首页渲染完成后,开始加载,或者延迟加载,延迟加载的目的就是界面先显示出来,然后加载,但是你觉得要延迟多久呢?在 Android 的高端机型上,应用的启动是非常快的 , 这时候只需要 Delay 很短的时间就可以了, 但是在低端机型上,应用的启动就没有那么快了,而且现在应用为了兼容旧的机型,往往需要 Delay 较长的时间,这样带来体验上的差异是很明显的。延迟加载有一种方式。</p> <pre><code class="language-java"> 第一种写法:直接PostDelay 300ms. myHandler.postDelayed(mLoadingRunnable, DEALY_TIME); 第二种写法:优化的DelayLoad getWindow().getDecorView().post(new Runnable() { @Override public void run() { myHandler.post(mLoadingRunnable); } </code></pre> <p><a href="http://www.androidperformance.com/2015/11/18/Android-app-lunch-optimize-delay-load/">http://www.androidperformance.com/2015/11/18/Android-app-lunch-optimize-delay-load/</a> 1.首先 , 创建 Handler 和 Runnable 对象, 其中 Runnable 对象的 run方法里面去更新 UI 线程.</p> <pre><code class="language-java">private Handler myHandler = new Handler(); private Runnable mLoadingRunnable = new Runnable() { @Override public void run() { updateText(); //更新UI线程 } };</code></pre> <p>2.在主 Activity 的 onCreate 中加入下面的代码</p> <pre><code class="language-java">getWindow().getDecorView().post(new Runnable() { @Override public void run() { myHandler.post(mLoadingRunnable); } });</code></pre>

页面列表

ITEM_HTML