Android画布两个活动-在第二个画布上绘制内容

Android画布两个活动-在第二个画布上绘制内容,android,android-canvas,Android,Android Canvas,我不知道这是怎么可能的,但是活动a中的画布出现在活动B中我的画布的顶部。两个活动始终处于活动状态,它们都在活动组中。一个活动的画布上的内容怎么可能显示在我的另一个活动之上 当我完成活动A或活动B时,我称之为,但它显然不起作用: void clearPlayerCanvas() { runOnUiThread(new Runnable(){ public void run() { Canvas canvas = null;

我不知道这是怎么可能的,但是活动a中的画布出现在活动B中我的画布的顶部。两个活动始终处于活动状态,它们都在活动组中。一个活动的画布上的内容怎么可能显示在我的另一个活动之上

当我完成活动A或活动B时,我称之为,但它显然不起作用:

void clearPlayerCanvas()
{
    runOnUiThread(new Runnable(){
        public void run()
        {

            Canvas canvas = null;
            try
            {

                canvas = holder.lockCanvas();

                if (canvas == null)
                {
                    System.out.println("Cannot lock canvas, skipping MJpeg frame");
                    return;
                }


                canvas.drawColor(Color.BLACK);


            } 
            finally 
            {
                if (canvas != null)
                    holder.unlockCanvasAndPost(canvas);


            }
        }
        });
}

这段代码只是用黑色覆盖了它在当前画布上的显示。无论如何,我甚至不应该在活动b中看到这个黑色画布,但我确实看到了。我也在使用SurfaceHolder。

你不应该同时运行两个活动事实上,我认为你不能


在ActivityA中,您没有停止将线程绘制到曲面视图。即使某个活动暂停,线程也会继续运行,所以我假设是这样。

我有一个ActivityGroup,它创建了两个不同的活动,我为它们保存了引用,然后在该ActivityGroup中执行此操作。addContentViewmyView。因此,活动都在ActivityGroups下运行,我想知道您的意思是停止线程。lockCanvas应该在自己的线程上管理其内容。SurfaceHolder.unlockCanvasAndPost应结束用于画布的所有线程。我还应该做什么?我不太使用SurfaceHolder,但我和我的理解可能是错误的,lockCanvas和unlockCanvas只是互斥体,确保只有一个线程在画布上写入。如果有两个线程写入画布,一个将绘制,另一个将在画布解锁后绘制。如果画布被锁定,那么尝试访问它的线程将被阻止,直到它解锁。