Я хочу выполнить какой-то код каждую секунду в android, но я хотел бы сделать это в одной теме (основной поток). До сих пор у меня есть это:Выполнять метод каждую секунду
locationTimer = new Timer("locationTimer", false);
locationTimer.schedule(new LocationCheckerTask(this), 0, 1000);
public class LocationCheckerTask extends TimerTask {
private GeoWatcher watcher;
public LocationCheckerTask(Context context) {
watcher = new GeoWatcher(context);
}
@Override
public void run() {
// funky stuff
}
}
К сожалению, Timer
класс работает это задачи в другом потоке. Почему я хочу сделать это в одном потоке? Код в run()
метод будет выполняться очень быстро, поэтому я решил, что для этого не нужен другой поток. То, что я хочу сделать, - это построить отдельные потоки в методе run()
на основе условия, рассчитанного каждую секунду. Поэтому вместо того, чтобы иметь дочерний поток, создающий другие потоки, я хотел бы сделать это на главном.
Вы используете этот код в Управлении? –
Да, инициализация 'locationTimer' выполняется в' Activity' –
Тот факт, что метод run будет выполняться быстро, не является причиной того, что он не запускает его в отдельном потоке. Если вы хотите запустить его в основном потоке, вам понадобится способ подождать секунду, которая заблокирует ваш основной поток .... – assylias