APP 冷啟動 /熱啟動

什么是冷啟動

冷啟動就是在應用啟動前掘猿,系統(tǒng)中沒有該應用的任何進程信息相赁。
比如說第一次打開整慎,應該殺死再開啟。

冷啟動/熱啟動的區(qū)別

熱啟動:用戶使用返回鍵退出應用酱讶,然后又馬上重新啟動應用
冷啟動退盯,系統(tǒng)會重新創(chuàng)建新的進程分配給它,所以會先創(chuàng)建和初始化 application類泻肯,再創(chuàng)建和初始化MainActivity類渊迁,然后會進行測量啊,布局繪制等等灶挟,最后顯示在界面上琉朽。
熱啟動,會從已有的進程來啟動稚铣,所以不會走application類箱叁,而直接走MainActivity 類墅垮。

冷啟動 時間的計算

在 android 4.4 之后,提供了一個方法
這個時間值耕漱,從應用啟動(創(chuàng)建進程)開始計算患整,到完成視圖的第一次繪制孵运,即activity 內(nèi)容對用戶可見為止捉撮。

冷啟動的流程

點擊App 啟動圖標的時候:
android系統(tǒng)會從 Zygote 進程中fork 創(chuàng)建出一個新的進程
創(chuàng)建和初始化 Application 類漱贱,創(chuàng)建MainActivity 類
inflate 布局 ,當onCreate/onStart/onResume 方法都走完
contentView 的measure/layout/draw 顯示在界面上

Application 的構(gòu)造方法 -->attachBaseContext() --> applicaition 的onCreate() --> Activity 的構(gòu)造方法 --> act 的 onCreate() ---> 配值主題中的背景 屬性 等等 -----> onStart() -----> onResume() -----> 測量布局 繪制 顯示在界面上妓笙。

重點之 冷啟動的優(yōu)化

  • 減少onCreate( ) 方法的工作量
    用戶總要等待一個啟動時間若河,而我們所能做的 就是 在 applicaiton 和第一個MainActivity 類 減少 onCreate() 的工作量,從而減短時間冷啟動時間给郊,但是又不得不使用一些第三方SDK牡肉,可以使用一些懶加載,在真正使用的地方再去初始化淆九。
    在Activity 創(chuàng)建的過程中统锤,其實是會經(jīng)過一系列 framework層的代碼。但是懶加載也有不好的地方炭庙,就是很難把所有的場景都列出饲窿,哪個第三方是 先使用的,所以一般還是放在 applicaition 去初始化
  • 不要讓Application 參與 業(yè)務(wù)操作
  • 不要在 Application 進行耗時操作
  • 不要以靜態(tài)變量的方式 在Application 中保存數(shù)據(jù)
  • 布局 / mainThread 的 操作

其他優(yōu)化

android 不要用靜態(tài)變量存儲數(shù)據(jù)
因為在Android 中焕蹄,進程不是安全的逾雄,有時候會被殺掉,下次是 重新初始化的 進程腻脏,數(shù)據(jù)不安全鸦泳。
使用其他 數(shù)據(jù)傳輸文件:文件 / sp / contentProvider
傳輸數(shù)據(jù)可以用intent

有關(guān)Sharepreference 問題
不能跨進程同步
在多進程讀寫的時候,不能跨進程的讀寫數(shù)據(jù)永品,或者獲取數(shù)據(jù)做鹰, 每個進程都會維護自己的一份sharepreference 副本,在它運行過程中鼎姐,其他進程是無法獲取這個shareprefer 副本钾麸,只有在應用結(jié)束之后,才能將每個進程的副本持久化的修改到文件系統(tǒng)當中炕桨。
存儲Sharepreference 的文件過大問題
android 五大存儲之一: 網(wǎng)絡(luò)饭尝,數(shù)據(jù)庫,contentProvider献宫,文件钥平,sp。
以 key -vlaue 成對存儲的
如果存的文件比較大
第一個問題就是:獲取值的時候有可能阻塞主線程姊途,影響性能涉瘾,有可能引起界面卡頓奈惑。
第二個問題就是:解析式會產(chǎn)生大量的 臨時對象,會造成頻繁的垃圾回收睡汹,大量的gc 造成內(nèi)存抖動。
key-value 存在內(nèi)存中寂殉,耗內(nèi)存

內(nèi)存對象的序列化
序列化:將對象 的狀態(tài)信息轉(zhuǎn)化為可以存儲傳輸?shù)牡男问降倪^程

  • Serializable java 的 序列化方式 會產(chǎn)生大量的臨時變量囚巴,引起垃圾回收
  • Parcelable 是 android中自帶的一種序列化方式,比Serializable 性能更好友扰,有個明顯的缺點就是彤叉,不能把那些要存儲在磁盤上的數(shù)據(jù)用parcelabel 來序列化 ,其本質(zhì)就是為了實現(xiàn)對象在進程間的傳遞村怪,并不是一個通用的序列化機制秽浇,用的場合基本都是android的進程間的通信。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末甚负,一起剝皮案震驚了整個濱河市柬焕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌梭域,老刑警劉巖斑举,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異病涨,居然都是意外死亡富玷,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門既穆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赎懦,“玉大人,你說我怎么就攤上這事幻工±剑” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵会钝,是天一觀的道長伐蒋。 經(jīng)常有香客問我,道長迁酸,這世上最難降的妖魔是什么先鱼? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮奸鬓,結(jié)果婚禮上焙畔,老公的妹妹穿的比我還像新娘。我一直安慰自己串远,他們只是感情好宏多,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布儿惫。 她就那樣靜靜地躺著,像睡著了一般伸但。 火紅的嫁衣襯著肌膚如雪肾请。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天更胖,我揣著相機與錄音铛铁,去河邊找鬼。 笑死却妨,一個胖子當著我的面吹牛饵逐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播彪标,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼倍权,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了捞烟?” 一聲冷哼從身側(cè)響起薄声,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎题画,沒想到半個月后奸柬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡婴程,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年廓奕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片档叔。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡桌粉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出衙四,到底是詐尸還是另有隱情铃肯,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布传蹈,位于F島的核電站押逼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏惦界。R本人自食惡果不足惜挑格,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沾歪。 院中可真熱鬧漂彤,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至媳板,卻和暖如春桑腮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蛉幸。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工到旦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人巨缘。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像采呐,于是被迫代替她去往敵國和親若锁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,133評論 25 707
  • 1斧吐、前言 隨著項目版本的迭代又固,App的性能問題會逐漸暴露出來,而好的用戶體驗與性能表現(xiàn)緊密相關(guān)煤率,性能問題從應用的啟...
    蕭竹閱讀 14,905評論 1 24
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理仰冠,服務(wù)發(fā)現(xiàn),斷路器蝶糯,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 1.什么是Activity?問的不太多昼捍,說點有深度的 四大組件之一,一般的,一個用戶交互界面對應一個activit...
    JoonyLee閱讀 5,734評論 2 51
  • 精編干貨<<<【自我認識】Day7 心理成長的核心是识虚,先要試著了解自己,然后再提升自己的能力妒茬,其實了解的本身就是提...
    愛戴Adele閱讀 162評論 0 0