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使应用程序静默崩溃所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)