Android: отложенное действие

Бывает необходиость выполнить что-то не сразу, а чуть позже в главном(main) потоке для GUI

Этот код поможет(на время разработки)


public class AwesomeActivity extends WorkspaceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
. . .
new Handler() {{
postDelayed(new Runnable() {
@Override
public void run() {
// do something here
hideShutter();
}
}, 1500);
}};
}
}

Мы просто на месте расширяем класс Handler, создаём Runnable. Всё компактно и не разнесенно на переменные – идеально для отладки

В случае, если хочется периодически выполнять через промежуток времени, то в коллбэке снова ставим себя же в очередь(this указывает на внутренний анонимный класс):


public class AwesomeActivity extends WorkspaceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
. . .
new Handler() {{
postDelayed(new Runnable() {
@Override
public void run() {
// do something here
hideShutter();
postDelayed(this, 500);
}
}, 1500);
}};
}
}

Внимание: этот код не должен быть в продакшене! Вы обязанны очищать очередь перед выходом – иначе приложение так и будет молотить cpu работать