我正在尝试使用一个Thread重复循环进行绘制,移动和其他的Android游戏。
我遇到了一个方法的执行问题,该方法使用“do while”循环搜索值。执行此方法时,在此过程未结束之前,线程不会继续。
避免这种情况的最佳选择是什么?在该方法中创建另一个线程?如果你能给出一个例子,我真的很感激。
这是一些伪代码:
void mainLoop(){
drawElements();
moveElements();
//...
//...
reposition();
}
void reposition(){
// this stops my thread
do{
// do stuff
}while(!end);
// do stuff
}
答案 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.
}
}