타이머용 Android 스레드
이 코드 조각은 Java에서 타이머용 스레드를 생성하는 방법을 보여줍니다. 그러나 코드가 의도한 대로 작동하지 않습니다. 문제를 분석하고 해결책을 제시해 보겠습니다.
5분부터 0:00까지 카운트다운하는 타이머를 생성하기 위한 코드입니다. 이 문제는 Android에서 허용되지 않는 UI 스레드가 아닌 다른 스레드에서 UI를 업데이트하기 때문에 발생합니다.
해결책 1: CountDownTimer
이를 해결하려면 문제가 발생하면 UI 스레드에서 UI가 업데이트되는지 확인하면서 특정 간격으로 코드를 실행할 수 있는 CountDownTimer를 사용할 수 있습니다. 예는 다음과 같습니다.
<code class="java">public class MainActivity extends Activity { TextView timer1; CountDownTimer countdownTimer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); timer1 = findViewById(R.id.timer1); countdownTimer = new CountDownTimer(300000, 1000) { @Override public void onTick(long millisUntilFinished) { // Update the timer text } @Override public void onFinish() { // Timer has finished } }; countdownTimer.start(); } }</code>
해결책 2: 핸들러
또 다른 옵션은 UI 스레드에서 실행될 작업을 예약할 수 있는 핸들러를 사용하는 것입니다. . 예는 다음과 같습니다.
<code class="java">public class MainActivity extends Activity { TextView timer1; Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); timer1 = findViewById(R.id.timer1); handler = new Handler(); // Schedule a task to update the timer every second handler.postDelayed(new Runnable() { @Override public void run() { // Update the timer text handler.postDelayed(this, 1000); } }, 1000); } }</code>
해결책 3: runOnUiThread를 사용한 타이머
타이머 사용을 선호하는 경우 runOnUiThread를 사용하여 UI를 업데이트하여 실행되는지 확인하세요. UI 스레드에서
<code class="java">public class MainActivity extends Activity { TextView timer1; Timer timer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); timer1 = findViewById(R.id.timer1); timer = new Timer(); // Schedule a task to update the timer every second timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { // Update the timer text } }); } }, 1000, 1000); } }</code>
위 내용은 UI 스레드 규칙을 위반하지 않고 Android에서 타이머를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!