我编写了一个使用单个线程工作正常的小程序,但我想通过一个单独的线程调用图形。
图形的调用来自按下按钮。 (这很好)
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();
我遇到了问题(这个)。我完全不明白“这个”在做什么,只是它指的是它所在的类。 答案很简单吗? 我试图这样做,因为我有以下消息“应用程序可能在其主线程上做了太多工作。”
谢谢
答案 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();
}
...
}
请注意不要异步绘制......