Android-переключатель просмотров после условия TimerTask - PullRequest
0 голосов
/ 13 сентября 2011

Я хочу создать несколько условий, чтобы вывести пользователя из активности через X времени.

У меня общее представление:

  • сохранить текущее время в миллисекундах, из объекта календаря в миллисекундах
  • определить, как долго я хочу, чтобы пользователь был в активности
  • добавьте, как долго + хранится текущее время, чтобы определить, какое календарное время в миллисекундах для загрузки закрывает эту операцию
  • сравнить время срабатывания с настоящим временем в миллисекундах

для последнего шага я обнаружил, что лучшим «слушателем времени», который я смог найти, был TimerTask, реализованный так:

protected void onPostExecute(Boolean success){

      kickout.schedule(new KickoutTask(), 5000);

}

class KickoutTask extends TimerTask {
    public void run() {
        Looper.prepare();

            replaceRootView(getLocalActivityManager().startActivity("myPreviousActivity", new
                Intent(this, myPreviousActivity.class)
                .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
                .getDecorView());

        Looper.loop();

    }
}

Это последняя часть AsyncTask, подсчет и «прослушивание времени» на самом деле работает, но когда дело доходит до замены представления в методе run(), приложение вылетает с

"Only the original thread that created a view hierarchy can touch its views."

Я понимаю концепцию, но не понимаю, как еще выйти из этой деятельности после разрешения подсчета в функции schedule. Также мне нужно «заменить» представление вместо того, чтобы просто использовать «finish ()» для этого действия из-за некоторого обновления, которое должно произойти.

Я хотел бы использовать другую простую AsyncTask, но функция schedule требует TimerTask

Понимание понимания

1 Ответ

1 голос
/ 13 сентября 2011

Сначала вы должны выполнить эту задачу в CountDownTimer

Во-вторых, вам нужно использовать Обработчик для обновления представлений из другого потока.

См. Этот учебник по Handler и AsyncTask:

http://www.vogella.de/articles/AndroidPerformance/article.html

...