寫在前面:其實(shí)寫這個(gè)的目的很簡單硫朦,就是崩潰日志的展示一下文黎,隨便百度一下都有很多的CrashHandler,然后里面寫了存儲(chǔ)到本地痛倚,上傳服務(wù)器等等。不過對于我自己來說澜躺,崩潰日志最重要的不是說上傳服務(wù)器蝉稳,因?yàn)橛泻芏嗟谌降模热鏰pp集成了極光掘鄙,友盟耘戚,Bugly等等他們都有崩潰日志的收集功能,并且展示效果還都不錯(cuò)操漠,就沒有必要再去自己后臺再弄一個(gè)崩潰收集系統(tǒng)收津。所以我就只需要一個(gè)測試手中發(fā)生崩潰的時(shí)候及時(shí)讓他知道發(fā)生了什么崩潰饿这,直接拿給我看就可以了,不至于拼命回想之前發(fā)生了什么進(jìn)行重現(xiàn)撞秋,所以才有了這個(gè)长捧。好吧,其實(shí)主要測試是個(gè)妹子吻贿。串结。。
正文
一.展示的模式
1.Debug模式下崩潰后展示CrashActivity Release模式直接退出APP
2.Debug模式下崩潰后展示CrashActivity Release模式下展示抱歉提示界面
二.崩潰信息的內(nèi)容
1.文件名
2.行數(shù)
3.時(shí)間
4.具體信息
5.更多其他信息
三.崩潰日志收集
1.設(shè)置Thread.setDefaultUncaughtExceptionHandler(this)舅列,通過重寫uncaughtException方法獲取到需要的數(shù)據(jù)
2.將信息傳遞給CrashActivity展示肌割,關(guān)閉應(yīng)用
四.發(fā)現(xiàn)的問題
1.問題:在一些手機(jī)上,打開多個(gè)頁面的時(shí)候崩潰帐要,使用以下代碼并不能退出應(yīng)用把敞,點(diǎn)擊返回還是在上一級頁面,并且重新加載數(shù)據(jù)榨惠,這就可能導(dǎo)致上一級頁面也出現(xiàn)崩潰奋早,然后周而復(fù)始,不停的崩
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
解決方案:通過Application注冊Activity生命周期回調(diào)然后finishAllActivity()冒冬,達(dá)到退出APP的目的
五.界面展示
六.使用
Step 1
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2.注意版本號
dependencies {
implementation 'com.github.zmemo:CrashHunter:1.0.1'
}
Step 3. 在Application中初始化
CrashHunter.init(this)
.setCrashMode(CrashModeEnum.MODE_CRASH_SHOW_DEBUG_AND_RELEASE)
.setReleaseCrashActivity(CrashReleaseActivity.class)
.isDebug(BuildConfig.DEBUG);
七.詳細(xì)代碼
由于代碼還是比較簡單伸蚯,就不貼出來了,放個(gè)Github網(wǎng)址:CrashHunter