Как повторно вызвать функцию в приложении Android? - PullRequest
0 голосов
/ 06 февраля 2012

Я использую камеру в своем приложении для Android и хочу делать снимки каждые 30 секунд. например. Для интервалов я хочу использовать разницу между предыдущим и текущим временем System.currentTimeMillis () или timeout. Но я не знаю, как заставить функцию вызываться многократно. Любое решение?

Ответы [ 2 ]

2 голосов
/ 06 февраля 2012

Вам нужна многопоточность.Если вы звоните доп.активность, он использует пользовательский интерфейс, поэтому вы не должны использовать таймер.Только обработчик.Многие Java-классы для многопоточности не предназначены для работы с пользовательским интерфейсом Android.Используйте этот класс:

import android.os.Handler;


/**
* Examples of use:
* 
*   Waiter(Runnable call, 30000); - in the calling method
*
* @author Petr Gangnus
*/
public class Waiter {
    /**
     * the handler that works instead of timer and supports UI
     */
    static private Handler handler = new Handler();
    Runnable task;

    public Waiter(Runnable task,long time){
        this.task=task;
        handler.removeCallbacks(task);
        handler.postDelayed(task, time);
    }

    public void stopWaiting(){
        handler.removeCallbacks(task);
    }

}

// setting the task called - in the calling method
final private Runnable call = new Runnable() {
    @Override
    public void run() {
        ...;
    }
};
1 голос
/ 06 февраля 2012

Если вы хотите периодически выполнять какую-либо задачу, тогда лучше всего использовать класс TimerTask. Оформить заказ очень простой пример здесь . В методе run вы можете указать свой код, который вы хотите периодически выполнять. Вы также можете указать временной интервал при планировании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...