我听说在 GUI 线程中进行计算是一个坏主意,所以我想到的是:
float someX;
float someY;
Thread t = new Thread(new Runnable() {
//making calculations here, setting someX, someY
})
this.runOnUiThread(new Runnable() {
setX(someX);
setY(someY);
});
因此,它们并行工作并在类内共享相同的变量,这是让事物在屏幕中移动的正确方法吗?
我想过使用AsyncTask
,但据说这仅适用于短期操作......所以跳过了它
如果上述方法是正确的,为什么在 flash(actionscript)中所有计算都是在 onFrame
事件(我认为是 GUI 线程)中进行的?
addEventListener(Event.ENTER_FRAME, function(){
//all is made here
});
我当然知道 actionscript 是一个线程,只是问
请提出任何建议或意见
这实际上取决于您正在做多少工作。大多数时候,我可以使用主线程进行小型图形计算。我不确定你在做什么,但是像根据输入设置位置这样的事情听起来像是主线程的事情。通常,如果您希望即时响应,您应该能够将其放在主线程中。
您可以判断是否需要将工作移动到新线程,因为您的应用程序将开始滞后。此时,您应该在新线程中工作。这可能会有所帮助。