Вопрос по timer, timertask, android, multithreading – Как вы используете TimerTask для запуска потока?

18

Я изо всех сил пытаюсь найти документацию для функции TimerTask на Android. Мне нужно запускать поток с интервалами, используя TimerTask, но я не знаю, как это сделать. Любые советы или примеры будут с благодарностью.

Ваш Ответ

3   ответа
28

Вы используетеTimer, и это автоматически создает новую тему для вас, когда вы планируетеTimerTask используя любой изschedule-методы.

Пример:

Timer t = new Timer();
t.schedule(myTimerTask, 1000L);

Это создает таймер работаетmyTimerTask в теме, принадлежащей этому таймеру, раз в секунду.

Ссылка была неправильно отформатирована в приведенном выше комментарии. Вот исправленная ссылка дляmethods of Timer
Приведенный выше код создаетTimer выполнение задачи в потокеonly once через одну секунду. Чтобы запускать задачу раз в секунду, используйте эту перегруженнуюschedule метод:schedule(TimerTask task, long delay, long period), Например,timer.schedule(myTimerTask, 1000L, 2000L) создает таймер, который запускается каждые 2 секунды после начальной задержки в 1 секунду. Вот ссылка на метод [ссылка] (developer.android.com/reference/java/util/…, долго, долго)) [ссылка]
58

Я реализовал что-то вроде этого, и он отлично работает:

    private Timer mTimer1;
    private TimerTask mTt1;
    private Handler mTimerHandler = new Handler();

    private void stopTimer(){
        if(mTimer1 != null){
            mTimer1.cancel();
            mTimer1.purge();
        }
    }

    private void startTimer(){
        mTimer1 = new Timer();
        mTt1 = new TimerTask() {
            public void run() {
                mTimerHandler.post(new Runnable() {
                    public void run(){
                        //TODO
                    }
                });
            }
        };

        mTimer1.schedule(mTt1, 1, 5000);
    }
офигенный ответ ... почему нет голосов? ....
Что такое 1 в расписании?
Пожалуйста, обратите внимание, что это вызывает Runnable для любого потока, в котором был создан этот класс.
1 в расписании - это время в миллисекундах до первого выполнения запланированной задачи TimerTask. 5000 - это величина задержки между последующими выполнениями в миллисекундах.
7

Это идеальный пример для задания таймера.

Timer timerObj = new Timer();
TimerTask timerTaskObj = new TimerTask() {
    public void run() {
       //perform your action here
    }
};
timerObj.schedule(timerTaskObj, 0, 15000);

Похожие вопросы