提升應(yīng)用崩潰時(shí)的用戶(hù)體驗(yàn)——去掉煩人的“很抱歉”提示框

好久不見(jiàn)了掰担。

最近诀紊,博主一直在忙著搞建站的事情眷蜈,也有一段時(shí)間沒(méi)有更新博客了沪哺,很抱歉。

相信很多在用或者用過(guò)Android系統(tǒng)的的手機(jī)的朋友都有過(guò)這樣的經(jīng)歷:自己玩著玩著某個(gè)程序酌儒,突然屏幕一黑凤粗,然后出現(xiàn)一個(gè)對(duì)話(huà)框,提示很抱歉今豆,應(yīng)用程序已經(jīng)停止工作嫌拣。這意味著程序已然崩潰了,用戶(hù)唯一要做的就是接下來(lái)重新運(yùn)行這個(gè)程序呆躲,或者去干些別的异逐。我個(gè)人推測(cè),前者占大多數(shù)插掂。

當(dāng)然灰瞻,一些比較健壯的程序是一般不會(huì)出現(xiàn)這種情況的腥例,但是,作為一名對(duì)用戶(hù)負(fù)責(zé)的開(kāi)發(fā)者酝润,要時(shí)刻為用戶(hù)著想燎竖,這就是我們今天要談的話(huà)題——優(yōu)化程序崩潰時(shí)的用戶(hù)體驗(yàn)。

我們的目標(biāo)是:程序發(fā)生了異常后要销,自定義異常處理流程构回,然后自動(dòng)重新啟動(dòng)程序。

看上去貌似很復(fù)雜疏咐,其實(shí)很容易纤掸。核心在于對(duì)Application這個(gè)單例的繼承。

首先浑塞,在應(yīng)用中寫(xiě)一個(gè)類(lèi)借跪,繼承Application,然后在AndroidManifest.xml中注冊(cè)酌壕,注冊(cè)的代碼可如下例:

android:name=".environment.BaseApplication"

android:enabled="true"

android:icon="@drawable/icon64"

android:label="@string/app_name"

android:persistent="true" >

......

其中掏愁,我把繼承了Application的類(lèi)是【包名】.environment.BaseApplication。? **大家可以根據(jù)自身的項(xiàng)目需要進(jìn)行安排卵牍,不要忘了在這里注冊(cè)就好果港。**? 之后就是對(duì)應(yīng)用中未捕獲的異常做處理了。? 在BaseApplication中辽慕,創(chuàng)建一個(gè)名為CrashHandler的子類(lèi),該類(lèi)實(shí)現(xiàn)UncaughtExceptionHandler接口赦肃,復(fù)寫(xiě)uncaughtException方法溅蛉。在該方法中,進(jìn)行相應(yīng)的崩潰處理他宛。這里我們需要重啟程序船侧,因此,該子類(lèi)可以寫(xiě)成如下代碼段所示的內(nèi)容:

// 異常處理

class CrashHandler implements UncaughtExceptionHandler {

@Override

public void uncaughtException(Thread thread, final Throwable ex) {

ex.printStackTrace();

Intent restartIntent = new Intent(BaseApplication.this, SplashScreen.class);

restartIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(restartIntent);

android.os.Process.killProcess(android.os.Process.myPid());

}

}

這里需要注意的是厅各,Intent對(duì)象的Flag必須包含F(xiàn)LAG_ACTIVITY_NEW_TASK镜撩。

最后,在復(fù)寫(xiě)的onCreate方法中队塘,指定異常處理的方法:

Thread.setDefaultUncaughtExceptionHandler(crashHandler);

其中袁梗,crashHandler為CrashHandler的對(duì)象。

到此憔古,我們的程序在發(fā)生崩潰的時(shí)候就不會(huì)出現(xiàn)“很抱歉遮怜。。鸿市【饬海”的對(duì)話(huà)框了即碗,取而代之的是自動(dòng)重啟。

當(dāng)然陌凳,這只是一個(gè)治標(biāo)不治本的方法剥懒,真正的解決之道依然要找到崩潰的位置,然后除掉這個(gè)Bug合敦。

最后初橘,關(guān)于Application,我這里就不多說(shuō)了蛤肌,如果諸位不是很了解的話(huà)壁却,可以看下這位兄弟的文章,會(huì)大有啟發(fā):

http://blog.csdn.net/pi9nc/article/details/11200969

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末裸准,一起剝皮案震驚了整個(gè)濱河市展东,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌炒俱,老刑警劉巖盐肃,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異权悟,居然都是意外死亡砸王,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)峦阁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)谦铃,“玉大人,你說(shuō)我怎么就攤上這事榔昔【匀颍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵撒会,是天一觀的道長(zhǎng)嘹朗。 經(jīng)常有香客問(wèn)我,道長(zhǎng)诵肛,這世上最難降的妖魔是什么屹培? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮怔檩,結(jié)果婚禮上褪秀,老公的妹妹穿的比我還像新娘。我一直安慰自己薛训,他們只是感情好溜歪,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著许蓖,像睡著了一般蝴猪。 火紅的嫁衣襯著肌膚如雪调衰。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天自阱,我揣著相機(jī)與錄音嚎莉,去河邊找鬼。 笑死沛豌,一個(gè)胖子當(dāng)著我的面吹牛趋箩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播加派,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼叫确,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了芍锦?” 一聲冷哼從身側(cè)響起竹勉,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎娄琉,沒(méi)想到半個(gè)月后次乓,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡孽水,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年票腰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片女气。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡杏慰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出炼鞠,到底是詐尸還是另有隱情缘滥,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布簇搅,位于F島的核電站完域,受9級(jí)特大地震影響软吐,放射性物質(zhì)發(fā)生泄漏瘩将。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一凹耙、第九天 我趴在偏房一處隱蔽的房頂上張望姿现。 院中可真熱鬧,春花似錦肖抱、人聲如沸备典。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)提佣。三九已至吮蛹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拌屏,已是汗流浹背潮针。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留倚喂,地道東北人每篷。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像端圈,于是被迫代替她去往敵國(guó)和親焦读。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,744評(píng)論 25 707
  • Android Studio JNI流程首先在java代碼聲明本地方法 用到native關(guān)鍵字 本地方法不用去實(shí)現(xiàn)...
    MigrationUK閱讀 11,846評(píng)論 7 123
  • 昨天與姐姐聊天舱权,我說(shuō)夫人(我喜歡這樣叫我媽媽?zhuān)┫胱屇忝髂昊丶掖;危缓蠼o你找個(gè)好婆家嫁了,主要因?yàn)槲医憬銈€(gè)子比較嬌小...
    CcDd阿芷閱讀 234評(píng)論 0 2
  • 今天的日記拖到現(xiàn)在才寫(xiě)刑巧,我自己也有些愧疚喧兄,不過(guò)還是自己玩心太重了,從昨天開(kāi)始就沒(méi)什么心思在這些方面了啊楚,不過(guò)還是要把...
    堅(jiān)志閱讀 173評(píng)論 0 0
  • 思考究竟是什么恭理?有時(shí)拯辙,我會(huì)想一些比較奇特的問(wèn)題。我們已經(jīng)被告知了太多颜价,太多的噪音干擾這我們涯保,是時(shí)候開(kāi)始獨(dú)立的去認(rèn)知...
    黑天鵝閱讀 432評(píng)論 0 1