0

我的应用程序需要从 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当网络关闭时,我该怎么做才能从函数中返回?

4

0 回答 0