Android: как использовать SystemClock.elapsedRealtime (), чтобы показывать второй по очереди? - PullRequest
0 голосов
/ 05 марта 2012

Я использую SystemClock.elapsedRealtime() для отображения времени.

Но теперь я хочу показать увеличение секунд на одну единицу на основе времени SystemClock.elapsedRealtime().
И даЯ должен использовать thred.

Так как это сделать?

Я пробовал это с этой темой:

// Start lengthy operation in a background thread
progressThread = new Thread(new Runnable() {

    public void run() {
        while (mProgressStatus < 1000) {
            mProgressStatus = ((int) (SystemClock.elapsedRealtime() / 10));
            // Update the progress bar
            mHandler.post(new Runnable() {

                public void run() {   
                    // try {
                    //  // progressThread.sleep(1000);
                    // } catch (InterruptedException e) {
                    //  // TODO Auto-generated catch block
                    //  e.printStackTrace();
                    // }
                    // progressBar.setProgress(mProgressStatus);
                    System.out.println("SECOND is :" + mProgressStatus);
                }
            });
        }
    }
});

Так что я должен изменить в этой теме наполучить секунды по одному для увеличения ??

Пожалуйста, помогите мне в этом.

Спасибо.

Ответы [ 2 ]

1 голос
/ 05 марта 2012

Если вы хотите использовать второй поток, чтобы получить истекшее время (как вы это сделали), вы ДОЛЖНЫ использовать какой-то метод, чтобы уведомить основной поток вашей Деятельности о том, что холст должен быть перекрашен, как упоминалось здесь и здесь.

Вы также можете использовать обработчик , который был создан в вашем основном потоке действий.Из вашего второго потока (который получает системное время) вы отправляете обработчику Сообщение , которое содержит системное время.Поскольку обработчик запускается в главном потоке, отсюда можно безопасно изменять представления.Я сомневаюсь, что это точный способ отображения системного времени на Android, то есть я думаю, что есть лучший способ.

1 голос
/ 05 марта 2012

Вы можете использовать Хронометр класс.Вы можете привязать его к SystemClock.elapsedRealtime (), используя setBase ().Другой способ может быть, если вы используете Handler внутри Activity и используете метод sendEmptyMessageDelayed () со значением 1000 для обновления таймера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...