我正在开发一个简单的Android应用程序,它在一个单独的线程中下载图像,然后更新主要活动中的imageViews。它工作得很好,但是当我在下载时旋转屏幕时,imageView不再与图像一起更新。
这是代码在更新imageViews的UI线程中的样子:
public void setImage(Bitmap bat, int view) {
Log.d("main", pic1.getDrawable().toString());
switch (view) {
case 1:
Log.d("main", bat.toString());
pic1.setImageBitmap(bat);
Log.d("main", pic1.getDrawable().toString());
break;
case 2:
pic2.setImageBitmap(bat);
break;
}
我在日志中尝试调试它。我无需旋转即可下载。当我旋转我的日志时告诉我:
07-30 03:29:59.380: D/main(3658): android.graphics.drawable.BitmapDrawable@42357908
07-30 03:29:59.390: D/main(3658): android.graphics.Bitmap@423af618
07-30 03:29:59.390: D/main(3658): android.graphics.drawable.BitmapDrawable@423afb20
显然,imageView drawable正在改变,但屏幕保持不变。我想也许尝试用这个方法中的(ImageView)findViewById(R.id.imageView1);
再次找到imageView,这样我就可以确定即使在屏幕旋转之后也会引用正确的imageView,但它并没有什么区别。
为什么我的屏幕上没有更新图像?
答案 0 :(得分:1)
Why isn't the image updating on my screen?
首先,当你旋转它时,你仍在下载该图像,在场景后面它正在做的是当你旋转屏幕时,你正在重建活动,它应该摧毁前一个但是你仍然在下载完成时有ImageView的引用,它将从最后一个Activity中更新imageView而不是新重新创建的活动。
答案 1 :(得分:0)
检查方向更改或方向更改时是否得到相同的响应?
如果是,则使用全局变量(位图)使用asynctask存储下载的图像。在里面
"onConfigurationChanged(..)"
将下载的图像设置为
ImageView.
这肯定会解决您的问题。