在android中用java创建简单的线程?

时间:2012-03-15 12:50:49

标签: java android multithreading

我有一个简单的Android砖破坏者游戏,目前正在一个线程上运行。我的任务是设计游戏以结合多线程,但我遇到了一些问题,找到一个足够简单的教程来指导我完成它。我现在让游戏顺利运行,它有MainActivity,GameView,GameLogic和SpriteObject类,正如你几乎所期望的那样,他们可以从他们的名字中做到。如何以及在哪里实现另一个线程,暂时只是增加一个外部变量,经常说“计时器”?

请记住,我一直在努力让自己的头脑绕过线索,所以你可能必须非常光顾我才能得到它。

由于

2 个答案:

答案 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