public void onResume() {
super.onResume();
boolean error = false;
try {
Camera = Camera.open(1);
} catch (RuntimeException ex) {
error = true;
ex.printStackTrace();
}
在这里更改了代码。
如果已在其他应用程序中打开相机,则显示警告对话框消息。
if(error){
new AlertDialog.Builder(this)
.setMessage("Camera in use ")
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
}
这里使用了finish(),只是为了避免应用程序崩溃。
finish();
if (mCamera != null) {
mCamera.startPreview();
mPreview.setCamera(mCamera);
}
}
public void finish() {
ViewGroup view = (ViewGroup) getWindow().getDecorView();
view.removeAllViews();
super.finish();
}
它正在进入if条件,但它没有显示警告对话框。相反,它崩溃了应用程序。但是当我关闭if语句后使用finish()时。它只是关闭应用程序而不会崩溃。
E / WindowManager:android.view.WindowLeaked我在应用程序关闭时收到此错误。
如何避免此错误并向用户显示一个对话框。
答案 0 :(得分:1)
您正在泄露Window
,因为您在Dialog
完成之前没有解雇Activity
。如果另一个Camera
正在使用Application
并且该应用超出了范围,那么该应用的开发人员就会采用不良做法;系统资源应该尽快发布。