我需要在ImageView
. 我想用 aProgressBar
告诉用户程序正在下载图像。如果程序在 30 秒内无法下载图像,程序将使用Toast
/AlertDialog
通知用户并退出。
我该如何实现这个功能?谁能给我一些关于如何构建框架的建议?我可以完成细节。我需要线程吗?/异步任务?
我需要在ImageView
. 我想用 aProgressBar
告诉用户程序正在下载图像。如果程序在 30 秒内无法下载图像,程序将使用Toast
/AlertDialog
通知用户并退出。
我该如何实现这个功能?谁能给我一些关于如何构建框架的建议?我可以完成细节。我需要线程吗?/异步任务?
是的,您确实需要在 AsyncTask 中下载图像(我假设您是从 URL 下载的)。有效地实现您的功能,这是您需要做的:
下面是我上面提到的步骤的伪代码/骨架(没有检查语法,所以我为任何错误道歉)
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()
}
你也可以看到这个。它将涵盖将图像下载到手机的过程以及在下载图像时提供加载线程。
我希望您尝试从已知网址下载图像,对吗?如果是这样,请查看此网址
希望对你有帮助...