Android 崩潰日志收集

原理
應(yīng)用出現(xiàn)異常后,會(huì)由默認(rèn)的異常處理器來(lái)處理異常,
我們要做的就是把這個(gè)任務(wù)接管過(guò)來(lái),自己處理異常,包括收集日志,保存到本地,然后上傳到服務(wù)器。

  • 步驟

1.自定義類 實(shí)現(xiàn)Thread.UncaughtExceptionHandler 接口

public class CrashHandler implements Thread.UncaughtExceptionHandler {

private static final String TAG = "CrashHandler";
private static CrashHandler INSTANCE = new CrashHandler();

private ISave mSave;//設(shè)置日志的保存方式  
private CrashHandler() { }//保證只有一個(gè)CrashHandler實(shí)例

/**
 * 獲取CrashHandler實(shí)例 ,單例模式
 */
public static CrashHandler getInstance() {
    return INSTANCE;
}

/**
 * 初始化,,設(shè)置此CrashHandler來(lái)響應(yīng)崩潰事件
 *
 * @param logSaver 保存的方式
 */
public void init(ISave logSaver) {
    mSave = logSaver;
    Thread.setDefaultUncaughtExceptionHandler(this);
}

/**
 * 當(dāng)UncaughtException發(fā)生時(shí)會(huì)轉(zhuǎn)入該函數(shù)來(lái)處理
 */
@Override
public void uncaughtException(final Thread thread, final Throwable ex) {
    Writer writer = new StringWriter();
    PrintWriter printWriter = new PrintWriter(writer);
    ex.printStackTrace(printWriter);
    Throwable cause = ex.getCause();
    while (cause != null) {
        cause.printStackTrace(printWriter);
        cause = cause.getCause();
    }
    printWriter.close();
    String stringBuilder = "↓↓↓↓exception↓↓↓↓\n" +
            writer.toString();
    mSave.writeCrash(thread, ex, TAG, stringBuilder);
    // 如果處理了,讓主程序繼續(xù)運(yùn)行3秒再退出,保證異步的寫(xiě)操作能及時(shí)完成
    try {
        Thread.sleep(3000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
 }
}  

推薦源碼

  • 三方SDK
    1.網(wǎng)易云捕
    2.騰訊bugly
    3.Bugtags
    4.蒲公英
    5.BugHD(fir.im)
    6.Testin
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 目前大多數(shù)app都是使用三方庫(kù)(例如友盟)實(shí)現(xiàn)崩潰日志收集, 但不一定了解是如何實(shí)現(xiàn)的。 今天工作不忙, 剛好有...
    brycegao閱讀 5,386評(píng)論 0 5
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,034評(píng)論 25 709
  • 《愛(ài)樂(lè)之城》英文名字又叫,《La La Land》,這是一個(gè)落魄的爵士樂(lè)鋼琴家小塞與女演員米婭之間關(guān)于愛(ài)情和夢(mèng)想的...
    阿拉小仙兒閱讀 438評(píng)論 0 0
  • 今天成甲老師更新一篇不追熱潮是關(guān)于知識(shí)付費(fèi)。有幾點(diǎn)感悟1.知識(shí)焦慮,在移動(dòng)互聯(lián)網(wǎng)技術(shù)等技術(shù)推動(dòng)下,信息爆炸和飛速流...
    水中望我閱讀 216評(píng)論 0 1
  • 總有這樣的人,你跟他說(shuō)你過(guò)得很好,很知足,可是他非不信。他會(huì)問(wèn),你怎么有沒(méi)有男(女)朋友,你什么時(shí)候結(jié)婚,什么時(shí)候...
    逸小文閱讀 279評(píng)論 0 0

友情鏈接更多精彩內(nèi)容