我有一个简单的Android砖破坏者游戏,目前正在一个线程上运行。我的任务是设计游戏以结合多线程,但我遇到了一些问题,找到一个足够简单的教程来指导我完成它。我现在让游戏顺利运行,它有MainActivity,GameView,GameLogic和SpriteObject类,正如你几乎所期望的那样,他们可以从他们的名字中做到。如何以及在哪里实现另一个线程,暂时只是增加一个外部变量,经常说“计时器”?
请记住,我一直在努力让自己的头脑绕过线索,所以你可能必须非常光顾我才能得到它。
由于
答案 0 :(得分:1)
所以如果它只是定期做一些事情只需使用scheduler / Timer就不需要创建一个新线程
import java.util.concurrent.ScheduledFuture;
private void startUpdateTimer(){
final Runnable updater = new Runnable() {
@Override
public void run() {
try {
updateTheActualVariable();
} catch (Exception ex) {
Log.e("error in getting updates", ex.getMessage());
}
}
};
final ScheduledFuture updaterHandle = sheduler.scheduleAtFixedRate(updater, 0, Constants.GET_UPDATES_PERIOD, TimeUnit.SECONDS);
}
在此处阅读更多http://developer.android.com/reference/java/util/concurrent/ScheduledExecutorService.html
你也可以好老java计时器 http://developer.android.com/reference/java/util/Timer.html
答案 1 :(得分:1)
Android有一个名为AsyncTask的类很漂亮:)
只需创建一个扩展它的类:
public class myTask extends AsyncTask<Object, Object, Object> {
@Override
protected Object doInBackground(Object... arg0) {
//Increase timer and wait here in a loop
return null;
}
protected void onPostExecute(Object result) {
//Something you want to do when done?
};
}
要启动它,只需致电
new myTask().execute(INPUT or null);
该部分是要执行的参数的类类型,可用于更新可视进度的对象的类类型以及doInBackground返回的值和onPostExecute获取的值。
有关指南,请转到此处:http://android-developers.blogspot.com/2009/05/painless-threading.html
文档:http://developer.android.com/reference/android/os/AsyncTask.html