【发布时间】:2020-08-17 12:16:08
【问题描述】:
我正在学习android开发,我必须检查服务器上是否存在文件。
我正在使用以下代码
public class CheckReportExists extends AsyncTask<String, Void, Boolean>{
Boolean fileExists = false;
public CheckReportExists() {
}
public Boolean CheckReportExists1(String download_url){
execute(download_url);
return fileExists;
}
@Override
protected void onPreExecute() {
//display progress dialog.
}
@Override
protected Boolean doInBackground(String... params) {
try {
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection con = (HttpURLConnection) new URL(params[0]).openConnection();
con.setRequestMethod("HEAD");
int response = con.getResponseCode();
if(response == HttpURLConnection.HTTP_OK){
fileExists = true;
}
} catch(Exception e){
}
return fileExists;
}
@Override
protected void onPostExecute(Boolean result) {
// dismiss progress dialog and update ui
//super.onPostExecute(result);
}
}
要调用它,我使用以下代码
CheckReportExists cre = new CheckReportExists();
Boolean fileExists = cre.CheckReportExists1(download_url);
if(fileExists) {
builder.setPositiveButton("Download Report", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new DownloadTask(Results.this, download_url);
}
});
}else{
builder.setPositiveButton("Report not ready yet", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
}
但是这段代码不是工作时间我得到AlertDialog 带有“报告尚未准备好”按钮,即使文件存在于服务器上。
谢谢。
【问题讨论】:
-
CheckReportExists1()将始终返回 false 值,因为它不会等到AsyncTask完成其工作
标签: java android android-asynctask android-alertdialog