Android에서 TimerTask 기능에 대한 설명서를 찾는 데 어려움을 겪고 있습니다. TimerTask를 사용하여 간격을두고 스레드를 실행해야하지만이 문제를 해결하는 방법을 모릅니다. 조언이나 예를 들어 주시면 감사하겠습니다.어떻게 TimerTask를 사용하여 스레드를 실행합니까?
답변
Timer
을 사용하면 schedule
- 방법 중 하나를 사용하여 TimerTask
을 예약 할 때 자동으로 새 스레드가 생성됩니다.
예 :이 한번 그 타이머 매초 속하는 스레드의 실행 myTimerTask
타이머를 생성
Timer t = new Timer();
t.schedule(myTimerTask, 1000L);
.
나는 이런 식으로 뭔가를 구현하고 그것을 잘 작동합니다 :
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);
}
멋진 답변 ... 왜 upvotes가 없습니까? .... –
일정에 따른 1은 무엇입니까? – Praneeth
1 일정은 예약 된 TimerTask를 처음 실행하기 전의 시간 (밀리 초)입니다. 5000은 후속 실행 사이의 지연 시간 (밀리 초)입니다. – Cogentleman
이 타이머 작업에 대한 완벽한 예입니다.
Timer timerObj = new Timer();
TimerTask timerTaskObj = new TimerTask() {
public void run() {
//perform your action here
}
};
timerObj.schedule(timerTaskObj, 0, 15000);
위의 코드는 1 초 후에 한 번만 스레드에서 작업을 실행하는 '타이머'를 만듭니다. 매 초마다 한 번씩 작업을 실행하려면 'schedule (TimerTask task, long delay, long period)'과 같은 오버로드 된'schedule' 메소드를 사용하십시오. 예를 들어,'timer.schedule (myTimerTask, 1000L, 2000L)'은 1 초의 초기 지연 후에 매 2 초마다 실행되는 타이머를 생성합니다. 다음은 [link] 메소드에 대한 링크입니다 (https://developer.android.com/reference/java/util/Timer.html#schedule (java.util.TimerTask, long, long)) [link] –
링크 위의 코멘트에서 잘못 포맷되었습니다. 다음은 [Timer의 방법] (https://developer.android.com/reference/java/util/Timer.html)에 대한 수정 된 링크입니다. –