TimerTask가 스레드로 어떻게 작동하는지 궁금합니다.Android에서 TimerTask는 스레드를 어떻게 관리합니까?
예를 들어 UI 스레드에서 실행되는 '실행'메소드가있는 TimerTask를 실행하는 코드가 있습니다.
class looper extends TimerTask {
public looper() {
}
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
timer.schedule(new looper(), new Date(new Date().getTime() + 100));
}
});
}
}
타이머는 다음과 같이 시작합니다 :
timer = new Timer();
timer.schedule(new looper(), new Date());
은 TimerTask를 새로운 스레드를 만들 것인가? 그렇다면 runOnUiThread
은 어떻게 작동합니까? 코드를 UI 스레드로 옮길 것인가?
TimerTask (timer.schedule
)를 다시 호출하고 run
내부의 무한 루프를 사용하여 계산하지 않아도되지만 UI 스레드가 차단되어 앱이 응답하지 않습니다.
P.S - UI를 업데이트해야하기 때문에 UI 스레드에서 코드를 실행해야합니다.
여기에 무슨 일이 발생합니까? 귀하의 질문에 대해
전체 코드를 게시하지는 않았지만 다음 timertask가 실행될 때 제어해야하므로 타이머를 다시 설정해야합니다. – Roman
새 스레드와 UI 스레드간에이 컨텍스트 전환을 피할 수있는 방법이 있습니까? – Roman
답변을 업데이트했습니다. – AlexBcn