我的应用程序需要从 Internet 下载数据库。这是在 中完成的,AsyncTask
因此当下载数据库时,它不会显示为Progress Dialog
.
这是数据库下载的代码:
public void downloadDB(String dbFile, String dbFileName) {
int count;
try {
URL url = new URL(dbFile);
URLConnection conection = url.openConnection();
conection.connect();
InputStream input = new BufferedInputStream(url.openStream(), 8192);
OutputStream output = new FileOutputStream(ctx.getApplicationInfo().dataDir + "/databases/" + dbFileName);
byte data[] = new byte[1024];
while ((count = input.read(data)) != -1) {
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (IOException e) {
Log.e("Error: ", e.getMessage());
}
}
}
我正在做一些测试,当下载数据库时,我关闭了互联网连接。问题是Progress Dialog
不会终止(它处于无限循环中)。我期待在关闭互联网后,会有IOException
,该函数返回到doInBackground
方法AsyncTask
并执行onPostExecute
我关闭的方法Progress Dialog
。
奇怪的是,如果我的手机与计算机断开连接,进度对话框永远不会消失,如果我在手机连接到计算机的情况下运行应用程序并查看日志猫,情况也是如此。如果我进入调试模式,downloadDB
结束并返回给调用者,然后,进度对话框被关闭。
downloadDB
当网络关闭时,我该怎么做才能从函数中返回?