• 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 即可,这个时间才是自己应用真正启动的耗时
  • 相关阅读:
    POJ
    UPC-5843: 摘樱桃(最优状态递推)
    BZOJ-1088 [SCOI2005]扫雷Mine(递推+思维)
    HDU-3065 病毒侵袭持续中(AC自动机)
    BZOJ-4236 JOIOJI (map查找+思维)
    HDU-2896 病毒侵袭(AC自动机)
    Hrbust-2060 截取方案数(KMP)
    UVALive 4490 压缩DP
    UVALive 5881
    UVALive 4168
  • 原文地址:https://www.cnblogs.com/zgz345/p/3253627.html
Copyright © 2020-2023  润新知