Android-Application被回收引發(fā)異常分析

Hi All,
今天收到反饋的一個(gè)問(wèn)題卑笨,說(shuō)單例里面報(bào)了一個(gè)空指針導(dǎo)致項(xiàng)目會(huì)crash掉,所以今天分析了一下候生,感覺(jué)有借鑒意義

原因

直觀的分析日志可以看到是因?yàn)閱卫锩娴囊粋€(gè)static的參數(shù)confignull導(dǎo)致的問(wèn)題同眯。

正常流程

1、設(shè)備入口
2唯鸭、onCreate()方法里面調(diào)用單例init方法把參數(shù)傳給單例 3须蜗、頁(yè)面里面需要單例的方法直接獲取這個(gè)單例 4、然后在退出登陸或者其他情況把單例destory() `

分析問(wèn)題和猜測(cè)

  • 問(wèn)題:按照正常的流程是不會(huì)出現(xiàn)config為空的問(wèn)題目溉,除非是單例銷(xiāo)毀了明肮。單例銷(xiāo)毀的可能性按照正常的流程會(huì)重新走入口頁(yè)面重新獲取conifg不會(huì)有問(wèn)題。
  • 猜測(cè):App切換到后臺(tái)后缭付,一段時(shí)間不操作柿估,再切回來(lái),很容易就發(fā)生崩潰(配置低的手機(jī)這種問(wèn)題出現(xiàn)更頻繁)陷猫。究其原因秫舌,是因?yàn)槌30褜?duì)象存儲(chǔ)在全局變量里面(這里是單例里面),而App切換到后臺(tái)后绣檬,進(jìn)程很容易就被系統(tǒng)回收了足陨,下次切換回來(lái)的時(shí)候App頁(yè)面再重建,但是系統(tǒng)重建的App對(duì)于原來(lái)存儲(chǔ)的全局變量卻無(wú)能為力娇未。
  • 結(jié)論:經(jīng)模擬和猜測(cè)相符(詳細(xì)復(fù)現(xiàn)步驟見(jiàn)下文)墨缘。

復(fù)現(xiàn)問(wèn)題

第一步:打開(kāi)App到門(mén)禁流程中需要單例DataSourceInstance的界面。
第二步:按Home鍵退出應(yīng)用零抬。
第三步:使用DDMS-Stop Process結(jié)束進(jìn)程镊讼。
第四步:回到項(xiàng)目應(yīng)用中,正常使用(注:現(xiàn)在處于一個(gè)新的Application中平夜,沒(méi)有之前操作存儲(chǔ)的數(shù)據(jù)了) 復(fù)現(xiàn)了出現(xiàn)該崩潰蝶棋,驗(yàn)證了猜想。

解決辦法

1忽妒、不在進(jìn)入的入口頁(yè)進(jìn)行init操作玩裙,放在Application中初始化。(目前的處理辦法)
因?yàn)槊看?code>App被回收重建的時(shí)候都會(huì)執(zhí)行onCreate方法锰扶。這樣就會(huì)避免這樣的問(wèn)題
2、本地存儲(chǔ)(不建議使用寝受,不具有實(shí)時(shí)性)
3坷牛、用dagger進(jìn)行參數(shù)和對(duì)象的注入,不設(shè)置全局的變量很澄,動(dòng)態(tài)按需注入京闰。
原因和第一步一樣颜及,dagger是在applicationinit的。當(dāng)頁(yè)面中需要注入的參數(shù)沒(méi)有就會(huì)new一個(gè)新的蹂楣。
4俏站、當(dāng)然還有其他的解決方案,歡迎討論痊土。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肄扎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子赁酝,更是在濱河造成了極大的恐慌犯祠,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酌呆,死亡現(xiàn)場(chǎng)離奇詭異衡载,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)隙袁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)痰娱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人菩收,你說(shuō)我怎么就攤上這事梨睁。” “怎么了坛梁?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵而姐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我划咐,道長(zhǎng)拴念,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任褐缠,我火速辦了婚禮政鼠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘队魏。我一直安慰自己公般,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布胡桨。 她就那樣靜靜地躺著官帘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昧谊。 梳的紋絲不亂的頭發(fā)上刽虹,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音呢诬,去河邊找鬼涌哲。 笑死胖缤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阀圾。 我是一名探鬼主播哪廓,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼初烘!你這毒婦竟也來(lái)了涡真?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤账月,失蹤者是張志新(化名)和其女友劉穎综膀,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體局齿,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡剧劝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抓歼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讥此。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谣妻,靈堂內(nèi)的尸體忽然破棺而出萄喳,到底是詐尸還是另有隱情,我是刑警寧澤蹋半,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布他巨,位于F島的核電站,受9級(jí)特大地震影響减江,放射性物質(zhì)發(fā)生泄漏染突。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一辈灼、第九天 我趴在偏房一處隱蔽的房頂上張望份企。 院中可真熱鬧,春花似錦巡莹、人聲如沸司志。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)骂远。三九已至,卻和暖如春腰根,著一層夾襖步出監(jiān)牢的瞬間激才,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贸营,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓岩睁,卻偏偏與公主長(zhǎng)得像钞脂,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子捕儒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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

  • 用兩張圖告訴你冰啃,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 12,724評(píng)論 2 59
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,138評(píng)論 25 707
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理刘莹,服務(wù)發(fā)現(xiàn)阎毅,斷路器,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,386評(píng)論 8 265
  • 對(duì)蕭燕燕來(lái)說(shuō)点弯,寧武關(guān)和蕭太后河肯定不是她一生中最重要的地方扇调,但是因?yàn)槲易罱萌ミ^(guò)這兩個(gè)地方,而我一直想為她寫(xiě)一篇...
    寒塘渡鶴閱讀 1,706評(píng)論 2 2