如何在应用程序崩溃之前保存堆栈跟踪

时间:2017-05-24 10:45:14

标签: android performance android-layout android-fragments

我需要存储崩溃日志并将其发送到服务器。我可以在崩溃日志存在之前首先保存它,但问题是它重新启动应用程序并且不向用户显示默认的崩溃消息。

我希望用户的崩溃流程正常。

public void registerCrash(){

    Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler()
    {
        @Override
        public void uncaughtException (Thread thread, Throwable e)
        {
            handleUncaughtException (thread, e);
        }
    });
}


public void handleUncaughtException (Thread thread, Throwable e)
{
    thread.getStackTrace();
    saveDataToFile(e.toString());
    System.exit(-1);
}

如果我更改System.exits(0),它会突然崩溃,并且不保存任何登录文件,并且System.exit(-1);会在崩溃时重新启动应用程序。

修改

saveDateToFile()

SharedPreferences sharedPreferences= context.getSharedPreferences(CRASH_LOG, Context.MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = sharedPreferences.edit();
prefsEditor.putString(STACK_TRACE, data);
prefsEditor.apply();

2 个答案:

答案 0 :(得分:1)

使用Fabric来获取崩溃报告,还有更多像安装或事件等。

它会自动将崩溃报告发送到服务器并通过电子邮件通知您。

易于实施,只需要包含sdk here

答案 1 :(得分:1)

请查看https://github.com/ligi/tracedroid - 它可以为您收集崩溃日志,您可以编写自己的发送模块