Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ImageView未使用从URL获取图像的异步任务刷新_Android_Android Imageview_Google Maps Android Api 2_Marker_Android Handler - Fatal编程技术网

Android ImageView未使用从URL获取图像的异步任务刷新

Android ImageView未使用从URL获取图像的异步任务刷新,android,android-imageview,google-maps-android-api-2,marker,android-handler,Android,Android Imageview,Google Maps Android Api 2,Marker,Android Handler,我试图在谷歌地图标记的信息窗口中播放一个类似视频的动画。 以下是一些非常有效的方法: 能够在markers信息窗口内显示图像幻灯片(存储在res/drawable文件夹中),使用更新Marker信息窗口内UI图像视图的处理程序 我还启动并运行了视频服务器,在请求时将图像位图作为流提供服务 我还开发了一个移动客户端,可以从服务器获取视频(一系列图像)并将其作为视频播放 现在,从我开发的应用程序[1]中,我尝试从服务器[2]获取一系列图像(属于视频),并在imageView中设置接收到的图像,而不是

我试图在谷歌地图标记的信息窗口中播放一个类似视频的动画。 以下是一些非常有效的方法:

  • 能够在markers信息窗口内显示图像幻灯片(存储在res/drawable文件夹中),使用更新Marker信息窗口内UI图像视图的处理程序
  • 我还启动并运行了视频服务器,在请求时将图像位图作为流提供服务
  • 我还开发了一个移动客户端,可以从服务器获取视频(一系列图像)并将其作为视频播放
  • 现在,从我开发的应用程序[1]中,我尝试从服务器[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仍然没有得到自动更新。我做错了什么?

    在您的
    if
    条件下,您不应该在
    ImageView
    中设置一些东西吗?@Apoorv:对不起,我已经更新了代码。我的错。但它仍然不起作用。是的,这就是计划。如果您查看带有标记“Actual Refresh”的logcat行,每次都会打印它,这表明我处于“If”状态。Else部分用于在服务器返回null时显示默认图像。