性能优化--启动优化

504 阅读1分钟

黑白屏问题

给启动activity单独设置一个Theme

<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/white</item>
    <item name="colorPrimaryDark">@color/white</item>
    <item name="colorAccent">@color/colorAccent</item>
    //设置一样图片
    <item name="android:windowBackground">@drawable/iv_guide_page_one</item>
</style>

查看activity执行时间

4.4以前

db shell am start -W com.lqr.wechat/com.lqr.wechat.activity.SplashActivity

image.png

  • ThisTime:最后一个启动的Activity的启动耗时;
  • TotalTime:自己的所有Activity的启动耗时;
  • WaitTime: ActivityManagerService启动App的Activity时的总时间(包括当前Activity的onPause()和自己Activity的启动)。

4.4版本以后Logcat 输入Display筛选系统日志 不过滤信息No Filters

image.png

三方sdk异步操作

但是要注意:

  • 1: 不能在异步任务中UI操作
  • 2: 里面的API不能创建handler
  • 3: 对异步要求不高的代码

特别需要注意:如果进入了首页,异步初始化还没有完成,然后首页中需要调用sdk里面的方法,这时候容易报空指针错误。

Trace工具分析

用这个方法,获取方法执行的时间

File file=new  File(Environment.getExternalStorageDirectory(),"app1.trace");
Debug.startMethodTracing(file.getAbsolutePath());
     中间为需要统计执行时间的代码
Debug.stopMethodTracing();

然后 adb pull /storage/emulated/0/app1.trace把文件拉出来分析 把pull到电脑上的文件拖到AS中就可以分析了

image.png f1()的横条表示方法执行的总时长。

trace文件的事件top图.png