我想为我的Android应用程序中的所有线程设置一个全局未捕获的异常处理程序.所以,在我的Application子类中,我Thread.UncaughtExceptionHandler为未捕获的异常设置了默认处理程序的实现.
Thread.setDefaultUncaughtExceptionHandler(
new DefaultExceptionHandler(this));
Run Code Online (Sandbox Code Playgroud)
在我的实现中,我试图显示一个AlertDialog显示适当的异常消息.
但是,这似乎不起作用.无论何时,对于任何未处理的线程抛出异常,我都会获得库存操作系统默认对话框("抱歉!-Application-have-stopped-unexpectedly dialog").
为未捕获的异常设置默认处理程序的正确和理想方法是什么?
我有一个应用程序,我使用设备相机.
现在我只在正常流量下释放相机.
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
if(camera != null) {
camera.stopPreview();
camera.release();
}
}
Run Code Online (Sandbox Code Playgroud)
因此,应用程序以意外的方式退出相机模式 - 即强制关闭(由于OutOfMemoryError) - 相机被锁定.释放它的唯一方法是重启设备.
申请开始后,我得到:
RuntimeException: Fail to connect to camera service
我怎么能确定,相机在任何情况下都会被释放?