性能優(yōu)化----APP啟動優(yōu)化(1)

android啟動流程.png

系統(tǒng)的啟動

1、打開電源 末捣,引導芯片代碼加載引導程序Boot Loader到ARM中去執(zhí)行
2坝辫、BootLoadder把操作系統(tǒng)拉起來
3、Linux內(nèi)核啟動開始系統(tǒng)設置汹粤,找到一個init.c文件啟動初始化進程
4命斧、init進程初始化和啟動屬性服務,之后開啟Zygote進程
5嘱兼、Zygote開始創(chuàng)建JVM并注冊JNI方法国葬,開啟SystemServer
6、啟動Binder線程池和SystemServiceManager,并啟動各種服務
7汇四、AMS啟動Launcher

Launcher啟動

一接奈、通過adb shell dumpsys activity activities查看當前的activity名
二、查看進程 adb shell ps
三通孽、application的啟動


開app進程.png
1序宦、E:\tools\android-src\android-6.0.1_r1\packages\apps\Launcher2\src\com\android\launcher2\Launcher.java
2、當我們用手點擊一個圖標時背苦,就到了這個類public final class Launcher extends Activity執(zhí)行onClick(View view)方法挨厚,會把這個應用的相關(guān)信息傳入
先獲取一個intent--->startActivitySafely(v, intent, tag)--》startActivity(v, intent, tag);-->startActivity(intent);
3、startActivity(intent)會開一個APP進程
4糠惫、ActivityThread.java做為入口     用attach開啟app    再加載application和activity
thread.attach(false);---》mgr.attachApplication(mAppThread)會通過遠端進程去
回調(diào)private void handleBindApplication(AppBindData data)
                        Application app = data.info.makeApplication(創(chuàng)建Application對象
                        mInstrumentation.callApplicationOnCreate(app);----》 app.onCreate();

黑白屏問題

一疫剃、res/values/styles.xml文件
a、白屏 <style name="AppTheme" parent="Theme.AppCompat.Light">
黑屏 <style name="AppTheme">(在以前的老版本上有效硼讽,現(xiàn)在的版本默認使用透明處理了)
b巢价、找到一個父類name="Platform.AppCompat.Light"中定義了
<item name="android:windowBackground">用來控制黑白屏
c、
解決辦法:

1.在自己的<style name="AppTheme" parent="Theme.AppCompat.Light">中加入windowsbackground
2.設置windowbackground為透明的  <item name="android:windowIsTranslucent">true</item>
但這2種方法會有個問題固阁,所有的activity啟動都會顯示
3.單獨做成一個主題
<style name="AppTheme.Launcher">
        <item name="android:windowBackground">@drawable/bg</item>
    </style>
    <style name="AppTheme.Launcher1">
        <item name="android:windowBackground">@drawable/bg</item>
    </style>
    <style name="AppTheme.Launcher2">
        <item name="android:windowBackground">@drawable/bg</item>
    </style>
再在功能清單中的單獨activity下設置
<activity
            android:theme="@style/AppTheme.Launcher"
然后在程序中使用setTheme(R.style.AppTheme);
讓APP中所有的activity還是使用以前的樣式壤躲,這樣做就只有啟動時才使用自己的樣式
4、QQ中的用法   
           <item name="android:windowDisablePreview">true</item>
           <item name="android:windowBackground">@null</item>

二备燃、啟動時間的查看
a碉克、4.4以前 4.4以前 adb shell am start -W com.lqr.wechat/com.lqr.wechat.activity.SplashActivity

1、ThisTime:最后一個啟動的Activity的啟動耗時并齐;
   TotalTime:自己的所有Activity的啟動耗時漏麦;
   WaitTime: ActivityManagerService啟動App的Activity時的總時間(包括當前Activity的onPause()和自己Activity的啟動)。
2况褪、AM路徑
E:\tools\android-src\android-6.0.1_r1\frameworks\base\cmds\am\src\com\android\commands\am
3撕贞、Am.java   946行開始打印啟動時間信息
    其中一個result對象,在871行初始化 result = mAm.startActivityAndWait(测垛。捏膨。。)
    在這個初始化時就已經(jīng)進行了時間的計算:
    在android-src\android-6.0.1_r1\frameworks\base\services\core\java\com\android\server\am\ActivityRecord.java文件中計算
void windowsDrawnLocked() --->reportLaunchTimeLocked(SystemClock.uptimeMillis())中完成時間的統(tǒng)計;

b食侮、4.4版本以后Logcat 輸入Display篩選系統(tǒng)日志 不過濾信息No Filters

TRACE工具分析代碼執(zhí)行時間

1号涯、Debug.startMethodTracing(filePath); 中間為需要統(tǒng)計執(zhí)行時間的代碼Debug.stopMethodTracing();
2、adb pull /storage/emulated/0/app1.trace把文件拉出來分析把pull到電腦上的文件拖到AS中就可以分析了
3锯七、優(yōu)化方案:

1.開線程     沒建handler    沒操作UI   對異步要求不高
2.懶加載     用到的時候再初始化链快,如網(wǎng)絡,數(shù)據(jù)庫操作
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末起胰,一起剝皮案震驚了整個濱河市久又,隨后出現(xiàn)的幾起案子巫延,更是在濱河造成了極大的恐慌,老刑警劉巖地消,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炉峰,死亡現(xiàn)場離奇詭異,居然都是意外死亡脉执,警方通過查閱死者的電腦和手機疼阔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來半夷,“玉大人婆廊,你說我怎么就攤上這事∥组希” “怎么了淘邻?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長湘换。 經(jīng)常有香客問我宾舅,道長,這世上最難降的妖魔是什么彩倚? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任筹我,我火速辦了婚禮,結(jié)果婚禮上帆离,老公的妹妹穿的比我還像新娘蔬蕊。我一直安慰自己,他們只是感情好哥谷,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布岸夯。 她就那樣靜靜地躺著,像睡著了一般呼巷。 火紅的嫁衣襯著肌膚如雪囱修。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天王悍,我揣著相機與錄音,去河邊找鬼餐曼。 笑死压储,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的源譬。 我是一名探鬼主播集惋,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼踩娘!你這毒婦竟也來了刮刑?” 一聲冷哼從身側(cè)響起喉祭,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雷绢,沒想到半個月后泛烙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡翘紊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年蔽氨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帆疟。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡鹉究,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出踪宠,到底是詐尸還是另有隱情自赔,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布柳琢,位于F島的核電站绍妨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏染厅。R本人自食惡果不足惜痘绎,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肖粮。 院中可真熱鬧孤页,春花似錦、人聲如沸涩馆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽魂那。三九已至蛾号,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涯雅,已是汗流浹背鲜结。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留活逆,地道東北人精刷。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像蔗候,于是被迫代替她去往敵國和親怒允。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355