zgz345

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

开发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 即可,这个时间才是自己应用真正启动的耗时

 

posted on 2013-08-12 19:11  zonyZhang  阅读(2649)  评论(0编辑  收藏  举报