Stack Overflow на русском Asked by llollcat on December 30, 2021
Хочу написать очередной проект для корзины, вот код:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
protected void onStart() {
super.onStart();
setContentView(R.layout.activity_main);
TextView tw = findViewById(R.id.timer);
int i = 0;
while (true) {
++i;
tw.setText(Integer.toString(i));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Хочу увидеть 0, затем 1, затем 2 и тд с интервалом в 1 секунду
Однако вижу это, то есть пустой экран
Как решить?
Вы усыпляете основной, UI поток приложения. В итоге система не успевает отрисовать интерфейс до следующего засыпания. Вам надо делать задержку в другом потоке. Для этого, например, можно вот такой код написать:
int i = 0;
TimerTask timerTask = new TimerTask() {
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
tw.setText(Integer.toString(i));
i++;
}
});
}
};
new Timer().schedule(timerTask, 0, 1000);
Answered by ЮрийСПб on December 30, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP