Я хочу создать несколько условий, чтобы вывести пользователя из активности через 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
Понимание понимания