Простое создание темы в Android с Java?

1

У меня есть простая игра-головоломка для Android, которая в настоящее время работает на одном потоке. Мне было поручено разработать игру, чтобы включить многопоточность, но у меня проблемы с поиском достаточно простого учебника, чтобы вести меня через него. Я играю гладко в настоящий момент, у него есть классы MainActivity, GameView, GameLogic и SpriteObject, так как вы почти наверняка ожидаете, что они будут делать их имена. Как и где бы я реализовал другой поток, который на данный момент просто увеличивал внешнюю переменную, так сказать "таймер" так часто?

Пожалуйста, учтите, что я изо всех сил пытался остричь голову, чтобы вы могли позаботиться о том, чтобы я ее получил.

благодаря

Теги:
multithreading

2 ответа

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

1

поэтому, если его просто делать что-то периодически просто использовать планировщик/Таймер не нужно создавать новый поток

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

  • 0
    Вы забыли упомянуть, что совместно используемая переменная ДОЛЖНА быть volatile или какой-то атомарной.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню