タイマー用の Android スレッド
このコード スニペットは、Java でタイマー用のスレッドを作成する方法を示しています。ただし、コードは意図したとおりに機能しません。問題を分析して解決策を提供しましょう。
このコードは、5 分から 0:00 までカウントダウンするタイマーを作成することを目的としています。この問題は、UI が UI スレッド以外のスレッドから更新されているために発生します。これは Android では許可されていません。
解決策 1: CountDownTimer
これを解決するにはこの問題を解決するには、CountDownTimer を使用します。これにより、UI が UI スレッド上で確実に更新されるようにしながら、特定の間隔でコードを実行できます。以下に例を示します。
<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 中国語 Web サイトの他の関連記事を参照してください。