如何添加多线程以显示图形以避免线程过载?

时间:2017-08-09 12:21:24

标签: android multithreading graphics

我编写了一个使用单个线程工作正常的小程序,但我想通过一个单独的线程调用图形。

图形的调用来自按下按钮。 (这很好)

            case R.id.button3:
            draw = new Draw(this);
            setContentView(draw);
            break;

如果我试图像这样包装这段代码......

            Thread thread = new Thread(new Runnable(){
                @Override
                public void run(){
                    draw = new Draw(this);
                    setContentView(draw);
                }
            });
            thread.start();

我遇到了问题(这个)。我完全不明白“这个”在做什么,只是它指的是它所在的类。 答案很简单吗? 我试图这样做,因为我有以下消息“应用程序可能在其主线程上做了太多工作。”

谢谢

3 个答案:

答案 0 :(得分:0)

在大多数情况下,Android中禁止从非ui线程修改UI。只能将SurfaceView绘制为异步。

此案例中Runnable的返回和实例。试试.this

答案 1 :(得分:0)

我认为你需要活动的背景。

指的是您所在的课程。您在Thread类中调用 this ,因此与主题相关联。

答案 2 :(得分:0)

假设您的匿名类包含在类名Outer中,那么您可以写:

class Outer {
    ...
    ... someMethod(...) {
        Thread thread = new Thread(new Runnable(){
            @Override
            public void run(){
                draw = new Draw(Outer.this); // access enclosing instance
                setContentView(draw);
            }
        });
        thread.start();
    }
    ...
}

请注意不要异步绘制......