Когда-то я чувствую, что использование AsyncTask довольно сложно для задачи, я ищу аналогичную функцию, например SwingUtilities.invokeLater в android. Поскольку я просто хочу выполнить одну строку кода, нет смысла создавать для нее новый класс.
Аналогичная функция SwingUtilities.invokeLater в android?
Ответ 1
Возможно, вы ищете:
Activity.runOnUiThread(Runnable action)
Ответ 2
Activity.runOnUiThread(Runnable action);
Вышеуказанный метод немного отличается от invokeLater java, потому что он проверяет, уже ли вы на нитке ui, тогда он немедленно запустит Runnable.
Существует еще один способ убедиться, что ваш Runnable будет вызван позже, а не сразу, даже если вы находитесь в потоке пользовательского интерфейса. Для этого вы пишете следующий код, когда находитесь в основном потоке. Если вы вызываете это, когда на backend-потоке ваша runnable будет выведена на backend-поток..
Handler h = new Handler();
h.post(new Runnable() {
@Override
public void run() {
//your code..
}
);
Ответ 3
Я точно не помню, что делает invokeLater()
, но если вы хотите выполнить что-то с задержкой, вы можете использовать postDealayed(). Естественно, это связано с потоком пользовательского интерфейса, поэтому не подходит для длительных задач.