В настоящее время я использую приведенную ниже структуру в своих действиях на заставке, чтобы показать ее в течение определенного периода времени:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startMainActivity();
}
}, SPLASH_DISPLAY_LENGHT);
Однако я просто создаю приложение, которое загружает некоторую информацию на свой экран-заставку из сети, используя AsyncTask следующим образом:
startUpAsyncTask = new StartUpAsyncTask(this);
startUpAsyncTask.execute();
Теперь я хочу реализовать Handler так, чтобы:
- Если во время загрузки сети что-то пошло не так, обработчик останавливается, чтобы перейти к MainActivity.
- Если загрузка сети длится дольше, чем
SPLASH_DISPLAY_LENGHT
, действие ожидает, пока загрузка сети завершится черезStartUpAsyncTask
, а затем переходит к следующему действию. - Если сеть
StartUpAsyncTask
завершает работу очень скоро, экран-заставка отображается не менееSPLASH_DISPLAY_LENGHT
времени.
Моя проблема заключается в том, как синхронизировать этот AsyncTask и обработчик для достижения таких ограничений.