Я пишу свое первое приложение, в котором мне нужно обновлять число в текстовом представлении каждую секунду до нажатия кнопки. Использование обработчика кажется невозможным, потому что номер создается и хранится вне обработчика, но он не может быть объявлен окончательным, потому что его нужно изменить. Thread.sleep
также кажется, что приложение зависает бесконечно, прежде чем выполняется какой-то код, написанный над ним.Обновление числа в TextView каждую секунду
final TextView countView = (TextView) findViewById(R.id.counter);
countView.setText("100,000,000,000");
//set a Calendar object to be 00:00:00:00 on Jan 1, 2015
final Calendar startTime = Calendar.getInstance();
startTime.set(2015, 0, 0, 12, 0, 0);
startTime.set(Calendar.MILLISECOND, 0);
final Button startButton = (Button) findViewById(R.id.startButton);
startButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//set a Calendar to be the time that the button is clicked and find the difference in ms between it and startTime
Calendar nowTime = Calendar.getInstance();
double milStart = startTime.getTimeInMillis();
double milNow = nowTime.getTimeInMillis();
double diff = (milNow-milStart)/1000; //difference in seconds between "start" date and current date
double total = 100000000000L; //# that needs to be updated
for(long i = 0L; i < diff; i++) {
total += 1.8;
}
countView.setText(NumberFormat.getInstance().format(total));
мне нужно продолжать увеличивать total
на 1,8 каждый второй или на 1 каждые 556 миллисекунд.
while(true) {
countView.setText(NumberFormat.getInstance().format(total));
total += 1.8;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
}
Вызывает приложение, чтобы повесить на неопределенное время, как только кнопка нажата, так что даже первый countView.setText(NumberFormat.getInstance().format(total));
не выполняет.
Использование обработчика для меня не представляется возможным, так как total
не может работать, если объявлено окончательным, но создание переменной внутри обработчика и циклирование приведет к тому, что значение никогда не изменится.
У меня отсутствует очевидное решение? Это моя первая реальная попытка с Java, так что это все ново для меня
Это работает, но не решает проблему я имею , У меня есть число, которое определено ранее в коде, и вам нужно обновить номер _that_, но не может перетащить его в runnable, потому что это не окончательный. Он не может быть объявлен окончательным, поскольку ему необходимо изменить – FutureShocked
, чтобы определить это число в своей деятельности «глобально», восстановить/воссоздать/получить из любого места в методе 'onCreate' или где угодно. после этого ставьте выше код, и тогда вы сможете ++ этот int внутри 'Runnable' – snachmsm