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



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

对图形的调用来自按钮按下。(这工作正常(

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();

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

谢谢

在大多数情况下,Android 禁止从非 ui 线程修改 UI。只有 SurfaceView 可以异步绘制。

而这个返回和实例Runnable在你的情况下。试试这个

我认为您需要活动的上下文。

是指您所在的班级。您在 Thread 类中调用它,因此与 Thread 相关联。

假设你的匿名类被包含在类名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();
}
...
}

请注意,您不应该异步绘制...

最新更新