Mar*_*rdo 5 java android firebase crashlytics crashlytics-android
问题:我正在一个旧项目(这是一个非常特定的项目)中工作,这需要我们有一个自定义异常处理程序来拦截异常,在崩溃发生之前将其杀死,然后重新启动该应用程序(不显示崩溃对话框)。
我试过的
我正在使用以下自定义异常处理程序重新启动应用程序进程:
public class UncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
(…)
@Override
public void uncaughtException(final Thread thread, final Throwable throwable) {
(…)
AppUtils.restartApplication(context);
}
}
Run Code Online (Sandbox Code Playgroud)
这是AppUtils.restartApplication(context)代码:
public final class AppUtils {
(…)
public static void restartApplication(@NonNull final Context context) {
startApplication(context);
closeApplication();
}
private static void startApplication(@NonNull final Context context) {
final Intent rescueIntent = new Intent(context, Activity.class);
rescueIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
final PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, rescueIntent, rescueIntent.getFlags());
final AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC, DateTime.now().plusSeconds(1).getMillis(), pendingIntent);
}
private static void closeApplication() {
Process.killProcess(Process.myPid());
System.exit(SYSTEM_EXIT_STATUS_FORCE_QUIT);
}
}
Run Code Online (Sandbox Code Playgroud)
在我们使用Splunk之前,它工作得很好。但是现在我需要为Firebase Crashlytics添加支持,而Crashlytics拥有ExceptionHandler。
因此,我遇到了两种不适合我的方案:
我尝试使用logException自定义异常处理程序中的Crashlytics中的方法绕过它,将所有日志记录为非致命错误,但效果不是很好:有时它记录正确,有时却没有。我相信这是由于Firebase inicialization和logException方法中的异步而发生的。
我将不胜感激任何帮助或建议。谢谢。
| 归档时间: |
|
| 查看次数: |
429 次 |
| 最近记录: |