1
나는 두 번째와 두 개의 콜론이 매초마다 바뀌면서 간단한 디지털 시계를 구현하려고합니다. 나는 DigitalClock을 사용하는 것에 대해 생각해 왔지만 두 번째뿐만 아니라 콜론도 번쩍이기를 원하고 am/pm을 보여주고 싶지는 않습니다. 그래서 나는 "타이머에서 UI 업데이트하기"를 읽고 우리에게 Handler를 사용할 것을 제안합니다. 그래서 Handler를 사용하고 매초마다 콜론과 초를 변경할 수 있지만 이상한 일은 때로는 초 점프 (1,2,4,5,6)입니다. 시계가 조금 뒤떨어져있는 것 같습니다. 이 문제를 해결할 방법이 있습니까? 감사!안드로이드 처리기 건너 뛰기/초 점프
tick_handler = new Handler();
Runnable updateSecond = new Runnable(){
@Override
public void run() {
second.setText(DataModel.getSeconds());
if(colon1.getVisibility()== View.VISIBLE){
colon1.setVisibility(View.INVISIBLE);
colon2.setVisibility(View.INVISIBLE);
} else {
colon1.setVisibility(View.VISIBLE);
colon2.setVisibility(View.VISIBLE);
}
tick_handler.postDelayed(this, 1000);
}
};
tick_handler.postDelayed(updateSecond, 0);
안녕하세요, 감사합니다. 에뮬레이터를 사용하고 있습니다. 단지 1000에서 500으로 바뀌었고 두 번째 점프가 중단되었지만 때로는 빠르게 변합니다 (34,35, 36로 빠르게 변경). 내가 Thread.sleep (1000)을 사용할 때 에뮬레이터에서이 문제를 실행할 수 있으며 같은 일이 발생합니다. 그래서 당신이 옳다고 생각하고 실제 기계를 시험해 보려고 노력할 것입니다. 감사! – Dongminator
내 대답의 두 번째 부분을 놓친 것 같습니다. 스레드를 실행할 때마다 millis를 세는 전역 변수를 생성하고 second.setText() 메소드 만 실행하고 누적 값이 3600에 도달하면 뷰의 가시성을 변경해야합니다. –
전역 변수 사용이 작동합니다! 감사! SystemClock.elapsedRealtime() - global_variable> 1000인지 확인한 다음 setText() 코드를 실행합니다. 다시 한 번 감사드립니다! – Dongminator