Android捕獲崩潰的日志

這是最早參加工作時候?qū)W習(xí)的一個技術(shù),應(yīng)用運行的時候遇到崩潰如何獲仁住?
無論是Android還是iOS县爬,應(yīng)用異常在所難免阳啥,所以就需要處理異常情況下出現(xiàn)的崩潰情況。崩潰總是無法預(yù)知的财喳,不可控的察迟。那么捕獲崩潰的意義在哪里呢?其實耳高,捕獲崩潰的意義很大扎瓶,能通過捕獲到的崩潰日志分析問題,繼而解決問題祝高,防止該異常在下一個版本中繼續(xù)存在栗弟。版本的更新迭代就是一個添加功能污筷,優(yōu)化性能工闺,解決異常的過程。最早的時候很奇怪瓣蛀,應(yīng)用就崩潰了陆蟆,怎么還能獲取到異常信息并且保存呢?當(dāng)時想的顯然這是不可能實現(xiàn)的惋增。但是通過了解了異常捕獲和拋出的過程叠殷,可以發(fā)現(xiàn)異常的捕獲及之后的一系列處理都是可控的。應(yīng)用中異常會經(jīng)常出現(xiàn)诈皿,只不過有的異常沒有被捕獲處理林束,這樣就會導(dǎo)致應(yīng)用崩潰像棘。這個時候異常信息就交給系統(tǒng)虛擬機(jī)進(jìn)行處理,虛擬機(jī)會Crash應(yīng)用壶冒,出現(xiàn)崩潰的情況缕题。我們捕獲崩潰日志就是在異常交給虛擬機(jī)之前,應(yīng)用本身獲取一下日志信息胖腾,進(jìn)而做一些保存或者上傳的操作烟零。實現(xiàn)獲取異常日志,分析日志的操作咸作。
就提實現(xiàn)非常簡單锨阿,這里就以把崩潰日志保存成文件的簡單方式為例,說明整個過程记罚。創(chuàng)建捕獲全局異常的類墅诡,捕獲應(yīng)用中未處理的異常,即崩潰情況:
<pre>
public class CrashHandler implements UncaughtExceptionHandler {
private static CrashHandler instance;
private Context ctx;
public static CrashHandler getInstance() {
if (instance == null) {
instance = new CrashHandler();
}
return instance;
}
public void init(Context ctx) {
this.ctx = ctx;
Thread.setDefaultUncaughtExceptionHandler(this);
}
@Override
public void uncaughtException(Thread arg0, Throwable arg1) {
String logdir;
if (Environment.getExternalStorageDirectory() != null) {
logdir = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "hbdLog";
File file = new File(logdir);
boolean mkSuccess;
if (!file.isDirectory()) {
mkSuccess = file.mkdirs();
if (!mkSuccess) {
mkSuccess = file.mkdirs();
}
}
try {
FileWriter fw = new FileWriter(logdir + File.separator + "error.log", true);
if (fw != null) {
fw.write(new Date() + "\n");
StackTraceElement[] stackTrace = arg1.getStackTrace();
fw.write(arg1.getMessage() + "\n");
for (int i = 0; i < stackTrace.length; i++) {
fw.write("file:" + stackTrace[i].getFileName() + " class:" + stackTrace[i].getClassName()+ " method:" + stackTrace[i].getMethodName() + " line:" + stackTrace[i].getLineNumber() + "\n");
}
fw.write("\n");
fw.close();
}
} catch (IOException e) {
Log.e("crash handler", "load file failed...", e.getCause());
}
}
arg1.printStackTrace();
System.exit(0);
}
}
</pre>

將捕獲異常類應(yīng)用到APP中桐智,僅需要在Application中的OnCreate方法中添加兩句話书斜,使其生效:

<pre>
CrashHandler crashHandler = CrashHandler.getInstance();
crashHandler.init(this);
</pre>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市酵使,隨后出現(xiàn)的幾起案子荐吉,更是在濱河造成了極大的恐慌,老刑警劉巖口渔,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件样屠,死亡現(xiàn)場離奇詭異,居然都是意外死亡缺脉,警方通過查閱死者的電腦和手機(jī)痪欲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來攻礼,“玉大人业踢,你說我怎么就攤上這事〗赴纾” “怎么了知举?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長太伊。 經(jīng)常有香客問我雇锡,道長,這世上最難降的妖魔是什么僚焦? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任锰提,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘立肘。我一直安慰自己边坤,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布谅年。 她就那樣靜靜地躺著惩嘉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪踢故。 梳的紋絲不亂的頭發(fā)上文黎,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天,我揣著相機(jī)與錄音殿较,去河邊找鬼耸峭。 笑死,一個胖子當(dāng)著我的面吹牛淋纲,可吹牛的內(nèi)容都是我干的劳闹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼洽瞬,長吁一口氣:“原來是場噩夢啊……” “哼本涕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起伙窃,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤菩颖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后为障,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晦闰,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年鳍怨,在試婚紗的時候發(fā)現(xiàn)自己被綠了呻右。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡鞋喇,死狀恐怖声滥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情侦香,我是刑警寧澤落塑,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站鄙皇,受9級特大地震影響芜赌,放射性物質(zhì)發(fā)生泄漏仰挣。R本人自食惡果不足惜伴逸,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望膘壶。 院中可真熱鬧错蝴,春花似錦洲愤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至官紫,卻和暖如春肛宋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背束世。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工酝陈, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人毁涉。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓沉帮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贫堰。 傳聞我的和親對象是個殘疾皇子穆壕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,293評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)其屏,斷路器喇勋,智...
    卡卡羅2017閱讀 134,702評論 18 139
  • 首席工程師揭秘:LinkedIn大數(shù)據(jù)后臺是如何運作的1http://mp.weixin.qq.com/s?__b...
    葡萄喃喃囈語閱讀 2,185評論 0 7
  • 轉(zhuǎn)自http://www.raywenderlich.com/zh-hans/30818/ios應(yīng)用崩潰日志揭秘 ...
    RunSnails閱讀 4,437評論 2 22
  • 我家的魚缸里養(yǎng)了五條錦鯉享郊,他們的身體是明晃晃的白色悠菜,頭部和背部像潑了紅色它碎、黑色和橘黃色的顏料驼仪,仿佛是從水墨畫...
    邵楊楊閱讀 816評論 0 9