android–setDefaultUncaughtExceptionHandler使应用程序静默崩溃

android–setDefaultUncaughtExceptionHandler使应用程序静默崩溃,第1张

概述CustomExceptionHandlerpublicclassCustomExceptionHandlerimplementsUncaughtExceptionHandler{privateContextctx;privateContentResolvercr;publicCustomExceptionHandler(Contextctx,ContentResolvercr){this.ctx=ctx;this.cr=cr;}

CustomExceptionHandler

public class CustomExceptionHandler implements UncaughtExceptionHandler {private Context ctx;private ContentResolver cr;public CustomExceptionHandler(Context ctx, ContentResolver cr) {    this.ctx = ctx;    this.cr = cr;}public voID uncaughtException(Thread t, Throwable e) {    final Writer result = new StringWriter();    final PrintWriter printWriter = new PrintWriter(result);    e.printstacktrace(printWriter);    String stacktrace = result.toString();    printWriter.close();    String deviceUuID = UtilitIEs.DeviceUuID(ctx, cr);    String bluetoothname = UtilitIEs.LocalBluetoothname();    AsyncTasks.ErrorLogTask logTask = new AsyncTasks.ErrorLogTask(e, bluetoothname, deviceUuID, stacktrace);    logTask.execute();}}

从我的主要活动中调用:

Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler(getBaseContext(), getContentResolver()));

当现在发生异常时,我不会得到常规的“不幸的是,已停止”d出窗口.它只是一个黑屏.如果我从我的主要活动中删除我的调用,换句话说不再使用CustomExceptionHandler,我得到默认行为.

有没有办法在我的类中实现默认的错误行为?

提前致谢!

解决方法:

您可以在异常处理程序的末尾添加以下内容以获取“遗憾的已停止”对话框:

System.exit(1);

但是,这将导致进程终止,这意味着您的AsyncTask将无法运行完成.

在任何情况下,如果你在uncaughtExceptionHandler中,我怀疑你的代码无论如何都会可靠地运行,因为你不知道应用程序的状态是什么.它可能会起作用,也可能不起作用.您还可以尝试在uncaughtExceptionHandler中创建一个新线程,让该线程休眠一会儿,然后使用System.exit()终止该应用程序.这可能会让您的AsyncTask有足够的时间运行完成.

总结

以上是内存溢出为你收集整理的android – setDefaultUncaughtExceptionHandler使应用程序静默崩溃全部内容,希望文章能够帮你解决android – setDefaultUncaughtExceptionHandler使应用程序静默崩溃所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1118881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存