如何从另一个线程更新SurfaceView?

时间:2014-08-19 10:06:53

标签: android bitmap surfaceview surfaceholder

我有一个帖子,我将逐一获得一些Bitmap。然后每当我得到一个新的Bitmap时,我需要更新主线程中的SurfaceView。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

这是一些伪代码

new Thread() {
    public void run() {
        while (bitmapIncoming()) {
            Bitmap bitmap = getNextBitmapAfterLongOperation();
            mActivityReference.runOnUiThread(new Runnable() {
                public void run() {
                    mActivityReference.updateSurfaceView(bitmap);
                }
            });
        }
    }
}.start();

答案 1 :(得分:-1)

在线程中,创建一个公共接口,定义每次检索位图时调用的函数(来自我假设的互联网),如:

public interface ImageRetrievedListener{
  public void onImageReceived(Bitmap bitmap);
}

在您使用Surface视图的Activity中实现此方法,并在onImageReceived回调中,将接收到的Bitmap添加到SurfaceView使用的位图数组中。应该工作,如果你还有任何问题,请告诉我。

// EDIT 不确定这是否是解决此问题的最佳解决方案,但我会以这种方式解决。