• Android 应用启动速度优化


    开发Android应用中,随着功能越来越多,启动速度越来越慢。有没有办法让自己应用启动速度快一点呢?

    方法是人想出来的。先说说我的实现方法:

    1 将onCreate 中初始化的内容,移动到线程中做初始化,加载等

    2 初始化完成之后,通过Handler发送消息,

    3 Hander 中收到消息后,再初始化完整界面。

     1 public class MainActivity extends Activity {
     2 
     3     @Override
     4     protected void onCreate(Bundle savedInstanceState) {
     5         super.onCreate(savedInstanceState);
     6         setContentView(R.layout.activity_main); //设置layout布居
     7 
     8         // 使用线程异步加载数据,不阻塞界面。
     9         new Thread(){
    10 
    11             @Override
    12             public void run() {
    13                 // TODO Auto-generated method stub
    14                 super.run();
    15                 initData();
    16             }
    17             
    18         }.start();
    19     }
    20 
    21     private final static int MSG_INIT_VIEW = 0xA00;
    22     private final Handler handler = new Handler() {
    23 
    24         @Override
    25         public void dispatchMessage(Message msg) {
    26             switch (msg.what) {
    27             case MSG_INIT_VIEW:
    28                 initView();
    29                 break;
    30             default:
    31                 super.dispatchMessage(msg);
    32             }
    33             
    34             
    35         }
    36         
    37     };
    38     
    39     private void initData(){
    40         try {
    41             Thread.sleep(5000);// 模拟加载数据需要 5秒
    42         } catch (InterruptedException e) {
    43             // TODO Auto-generated catch block
    44             e.printStackTrace();
    45         }
    46         //数据加载完成,可以更新界面了
    47         handler.sendEmptyMessage(MSG_INIT_VIEW);
    48     }
    49     
    50     private void initView(){
    51         //TODO 刷新界面
    52     }
    53 
    54 }
    查看应用启动时间或某个Activity时间方法如下:
    adb shell am start -w packagename/activity 输出的结果类似于: $ adb shell am start -W com.test/com.test.MainActivity Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.test/com.test.MainActivity}
    Status: ok
    LaunchState: COLD
    Activity:com.test/com.test.MainActivity
    TotalTime: 496
    WaitTime: 503
    Complete
    WaitTime 返回从 startActivity 到应用第一帧完全显示这段时间. 就是总的耗时,包括前一个应用 Activity pause 的时间和新应用启动的时间;
    TotalTime 表示新应用启动的耗时,包括新进程的启动和 Activity 的启动,但不包括前一个应用Activity pause的耗时。
    开发者只需要关心 TotalTime 即可,这个时间才是自己应用真正启动的耗时
  • 相关阅读:
    CODE[VS] 1018 单词接龙
    Linux提示BOOT空间不足问题
    CODE[VS] 1017 乘积最大
    关于printf输出结果的一些问题
    CODE[VS] 1220 数字三角形
    redux
    Promise面试题
    学习Promise笔记
    js 事件委托 事件代理
    前端通信、跨域
  • 原文地址:https://www.cnblogs.com/zgz345/p/3253627.html
Copyright © 2020-2023  润新知