Android开发经验谈Android开发Android技术知识

part01_android应用启动速度优化

2018-03-20  本文已影响113人  IT魔幻师

一、查看启动速度

在启动应用的时候查看AndroidStudio的日志,过虑框中输入:Display就可以看到启动时间

如果是在比较老的机器上(4.4以下)使用命令行

    //adb shell am start -W 包名/要启动的activity全类名
    adb shell am start -W com.taiyao.tyle/com.taiyao.tyle.activity.SplashActivity

关于ThisTime/TotalTime/WaitTime的区别可以参考博客:http://androidperformance.com/2015/12/31/How-to-calculation-android-app-lunch-time.html

二、APP启动流程

应用启动执行顺序:开辟内存,启动系统服务执行ActivityThread线程创建Application-->执行Application的Oncreat方法-->执行MainActivity的oncreate方法-->加载layout_main.xml-->显示第一帧画面

三、启动黑白屏优化

1> 定义样式

    <style name="AppTheme.Launcher">
        <item name="android:windowBackground">@drawable/bg</item>
    </style>

2> 引入样式

    <activity
        android:name=".activity.SplashActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.Launcher"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

3> 在SplashActivity的onCreate方法中设置回原来的样式

     @Override
        protected void onCreate(Bundle savedInstanceState) {
            setTheme(R.style.AppTheme);
            super.onCreate(savedInstanceState);
        }

四、使用Debug类查看代码耗时

    //trace文件保存路径
    File file = new File(Environment.getExternalStorageDirectory(), "appDebug");
    //开始计时
    Debug.startMethodTracing(file.getAbsolutePath());

        ...(此处省略N行代码)

    //停止计时
    Debug.stopMethodTracing();//与start方法成对出现

上述代码会将代码耗时保存在file路径下的appDebug.trace 文件里面,打开一个androidStudio窗口将文件拖进去就可以打开。

通过上述图表分析,找到最耗时的函数进行优化

五、优化手段

例:部分第三方的sdk初始化的代码中有创建Handler,这种情况下就不可以将其放入子线程

通过反编译腾讯QQ早期版本的APK发现其onCreate方法中是没有执行任何代码的,非常干净。

上一篇 下一篇

猜你喜欢

热点阅读