Да, вам нужно загрузить изображение в AsyncTask (я предполагаю, что вы скачиваете с URL).Чтобы эффективно реализовать свои функциональные возможности, это то, что вам нужно сделать:
- Создать AsyncTask для загрузки вашего изображения (осуществить загрузку в doInBackground ()), а также иметь логическое значение (скажем, isImageDownloaded) для отслеживания, если изображениеуспешно загружен в postExecute ().Не забудьте также показать свой индикатор выполнения перед началом загрузки
- Выполните AsyncTask, чтобы начать загрузку
- Создать расширение android.os.CountDownTimer для обратного отсчета 30 секунд
- В методе onFinish () проверьте отслеживаемое логическое значение, если оно ложно, то вы отменяете AsyncTask и выбрасываете тост / диалоговое окно, которое вы намеревались
Ниже приведен псевдокод / скелет шаговчто я упоминал выше (не проверял синтаксис, поэтому прошу прощения за любую ошибку)
public void downloadAndCheck() {
AsyncTask downloadImageAsyncTask =
new AsyncTask() {
@Override
protected Boolean doInBackground(Void... params) {
// download image here, indicate success in the return boolean
}
@Override
protected void onPostExecute(Boolean isConnected) {
// set the boolean result in a variable
// remove the progress bar
}
};
try {
downloadImageAsyncTask.execute();
} catch(RejectedExecutionException e) {
// might happen, in this case, you need to also throw the alert
// because the download might fail
}
// note that you could also use other timer related class in Android aside from this CountDownTimer, I prefer this class because I could do something on every interval basis
// tick every 10 secs (or what you think is necessary)
CountDownTimer timer = new CountDownTimer(30000, 10000) {
@Override
public void onFinish() {
// check the boolean, if it is false, throw toast/dialog
}
@Override
public void onTick(long millisUntilFinished) {
// you could alternatively update anything you want every tick of the interval that you specified
}
};
timer.start()
}