在我的应用程序中,我有一个从服务器加载一些图像的威胁。 下载图像后,它们将显示在对话框中。 这是有效的,但如果用户通过后退按钮离开屏幕,我的应用程序将崩溃与此logcat输出:
09-21 09:54:14.553: ERROR/AndroidRuntime(486): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@4053fb28 is not valid; is your activity running?
应用程序正在运行,直到旧活动调用下面的代码(创建自定义对话框)。
我发现它崩溃了: 下载图像后我正在调用Handler。在处理程序中,我执行以下操作:
final Dialog dialog = new Dialog(Product.this);
dialog.setContentView(R.layout.imageview_inflator);
dialog.setTitle("Choose a Picture");
dialog.setCancelable(true);
// set up image view
final ImageView img = (ImageView) dialog.findViewById(R.id.imageView);
img.setImageBitmap(ImageLoader.cache.get(pic_url[pictureCounter]));
dialog.show();
如何避免崩溃。我想如果活动不是正在运行的话,我应该以某种方式避免显示对话框。
答案 0 :(得分:1)
当您离开活动时,您收到此错误bcoz,您的线程仍在运行,并且它正在调用您的处理程序以显示对话框,并且该对话框没有可以显示它的活动。
您可以将对话框代码放在try-catch
内来避免它,因为它会阻止您的应用崩溃。