Android客戶(hù)端項(xiàng)目全局異常處理和服務(wù)器數(shù)據(jù)保存
- 作者:新網(wǎng)
- 來(lái)源:新網(wǎng)
- 瀏覽:100
- 2018-05-03 13:19:31
愛(ài)生活,愛(ài)Android!相信每一個(gè)Android開(kāi)發(fā)人員都喜愛(ài)自己的工作,每天不停的生產(chǎn)代碼,不停的解決Bug,樂(lè)在其中,不斷的學(xué)習(xí),不斷的總結(jié),我們應(yīng)該積累出自己寫(xiě)代碼的良好習(xí)慣,慢慢的我們就會(huì)固定出完全屬于自己的東西,下面是自己寫(xiě)項(xiàng)目時(shí)碰到的一個(gè)問(wèn)題,跟大家分享一下,有見(jiàn)解不到之處還請(qǐng)大家指教,謝謝!
愛(ài)生活,愛(ài)Android!相信每一個(gè)Android開(kāi)發(fā)人員都喜愛(ài)自己的工作,每天不停的生產(chǎn)代碼,不停的解決Bug,樂(lè)在其中,不斷的學(xué)習(xí),不斷的總結(jié),我們應(yīng)該積累出自己寫(xiě)代碼的良好習(xí)慣,慢慢的我們就會(huì)固定出完全屬于自己的東西,下面是自己寫(xiě)項(xiàng)目時(shí)碰到的一個(gè)問(wèn)題,跟大家分享一下,有見(jiàn)解不到之處還請(qǐng)大家指教,謝謝!
<
div>
大家都知道Android是基于Java的,本身會(huì)產(chǎn)生很多我們寫(xiě)代碼時(shí)預(yù)料不到的異常,而每一個(gè)異常都很可能導(dǎo)致我們的程序崩潰,比如最常見(jiàn)的NullException、ClassCastException、ClassNotFoundException、ANR等等的,而Android本身的OS會(huì)捕捉到這些異常,在dalvik中處理,然后退出程序,退出的界面也很不友好,在這種情況下,我們就有了自己的想法,如果我們能捕捉到這些異常,就可以將其利用起來(lái),提升我們的應(yīng)用質(zhì)量,我們可以在捕捉到異常后進(jìn)行如下操作:
1、定義自己的處理界面,友好的展現(xiàn)給客戶(hù),提高用戶(hù)體驗(yàn)
2、收集錯(cuò)誤信息,及時(shí)修改,提高代碼的穩(wěn)定性
光從文字看起來(lái),這兩點(diǎn)非常簡(jiǎn)單,但是當(dāng)你自己將異常處理機(jī)制布署在自己項(xiàng)目中時(shí),你就知道它對(duì)我們的項(xiàng)目帶來(lái)多大的幫助!
下面來(lái)看一下,如何給自己的項(xiàng)目中布署全局的異常處理,步驟分為如下幾步:
第一步,注冊(cè)Application,在開(kāi)發(fā)應(yīng)用時(shí)都會(huì)和Activity打交道,而Application使用的就相對(duì)較少了。 Application是用來(lái)管理應(yīng)用程序的全局狀態(tài)的,比如載入資源文件。 在應(yīng)用程序啟動(dòng)的時(shí)候Application會(huì)首先創(chuàng)建,然后才會(huì)根據(jù)情況(Intent)啟動(dòng)相應(yīng)的Activity或者Service。 本文將在Application中注冊(cè)未捕獲異常處理器。
第二步,實(shí)現(xiàn)UncaughtExceptionHandler,UncaughtExceptionHandler是線程未捕獲異??刂破?,用來(lái)處理未捕獲異常的。 如果程序出現(xiàn)了未捕獲異常默認(rèn)情況下則會(huì)出現(xiàn)強(qiáng)行關(guān)閉對(duì)話框?qū)崿F(xiàn)該接口并注冊(cè)為程序中的默認(rèn)未捕獲異常處理 這樣當(dāng)未捕獲異常發(fā)生時(shí),就可以做些異常處理操作 例如:收集異常信息,發(fā)送錯(cuò)誤報(bào)告 等。當(dāng)程序發(fā)生Uncaught異常的時(shí)候,由該類(lèi)來(lái)接管程序,并記錄發(fā)送錯(cuò)誤報(bào)告。
第三步,異常處理操作的收集異常信息
第四步,異常處理操作的本地保存異常報(bào)告