线程正在停止,直到方法的执行完成。 (机器人)

时间:2014-01-02 00:07:11

标签: android runnable ui-thread

我正在尝试使用一个Thread重复循环进行绘制,移动和其他的Android游戏。

我遇到了一个方法的执行问题,该方法使用“do while”循环搜索值。执行此方法时,在此过程未结束之前,线程不会继续。

避免这种情况的最佳选择是什么?在该方法中创建另一个线程?如果你能给出一个例子,我真的很感激。

这是一些伪代码:

void mainLoop(){
    drawElements();
    moveElements();
    //...
    //...
    reposition();
}

void reposition(){
    // this stops my thread
    do{
        // do stuff
    }while(!end);

    // do stuff
}

3 个答案:

答案 0 :(得分:1)

如果仍然需要阻止并等待循环完成搜索,则创建另一个线程将无法帮助您。问题实际上是“do stuff”循环中发生的事情,你只需要优化它来解决问题。

答案 1 :(得分:1)

使用asyntask并在asyntask的doInBackground中,让你的线程工作,并在asyntask的onPostExecute中调用你的repositionMethod

答案 2 :(得分:1)

正如wqrahd建议使用AsyncTask。 我假设mainLoop是一个主UI线程。

public class RepositionClass扩展了AsyncTask {

private Context mContext;

public RepositionClass(Context context) {
    mContext = context;
}

@Override
protected void onPreExecute() { 
  // do UI related  here, this function will run in main thread context.
}

@Override
protected Boolean doInBackground(String... params) {
   // call non-ui(computation intensive) part of reposition function here. 
   return true;
}

@Override
protected void onPostExecute(Boolean result) {
   // do UI related part of reposition function here.
}

}