使用AsyncTask从URL获取图像时,ImageView不会刷新

时间:2013-11-15 06:13:04

标签: android android-imageview google-maps-android-api-2 marker android-handler

我正试图在谷歌地图中播放像动画这样的视频 - 标记的infoWindow。 以下是完美运作的事情:

  1. 能够使用处理程序在标记infoWindow内显示图像幻灯片放映(存储在res / drawable文件夹中),该处理程序更新标记的infoWindow中的UI图像视图
  2. 我还启动并运行了视频服务器,在请求时将图像位图作为Streams提供
  3. 我还开发了一个移动客户端,可以从服务器获取视频(系列图像)并将其作为视频播放。
  4. 现在,从我开发的APPLICATION [1]开始,我试图从SERVER [2]获取一系列图像(属于视频)而不是存储的图像,并在imageView中设置接收的图像。

    我面临的问题是我正在获取新图像,我正在调用imageView.setImageBitmap(bt);但是在我强制更新视图(通过触摸事件)之前,imageView没有刷新

    以下是我的代码:

    class RefreshHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
            BasicMapActivity.this.updateUI();
        }
    
        public void sleep(long delayMillis) {
            this.removeMessages(0);
            sendMessageDelayed(obtainMessage(0), delayMillis);
        }
    };
    
    
    public void updateUI() {
    
        refreshHandler.sleep(200); // Handler type object which makes this function to call as if its on a different thread
    
        Log.d("Update UI - in RUN", "liveOffset : " + liveOffset);
    
        StreamElement se = getNextLiveView();
    
        if (se != null) {
            Bitmap bmp = BitmapFactory.decodeByteArray(se.getData(), 0, se.getData().length);
            Bitmap bt=Bitmap.createScaledBitmap(bmp, 150, 150, false);
            Log.d("Actual Refresh ", "liveOffset : " + liveOffset);  // updates inside the above getNextLiveView function that fetches the new image
    imageViewK = (ImageView) kv.findViewById(R.id.imageView1);
            imageViewK.setImageBitmap(bt);  // Received new image is set every time on the imageView
            //imageViewK.postInvalidate();      
        } else{
            Bitmap bMap = BitmapFactory.decodeResource(getResources(),
            imgidK[1]);
            Bitmap bt = Bitmap.createScaledBitmap(bMap, 75, 75, false);
            imageViewK.setImageBitmap(bt);
        }
    

    }

    我已经评论了上面的代码来解释我的情况。每次都会记录此日志(Log.d(“实际刷新”,“liveOffset:”+ liveOffset),其中包含更新的liveOffset值) - >这意味着,我每次都可以在线程循环执行中到达imageView设置行。正如您所看到的,我也尝试过使用imageView.postInvalidate(),因为我想这个方法是在非UI线程上运行的,但仍然没有自动更新imageView。我在这做错了什么?

0 个答案:

没有答案