0

私のアプリは、インターネットからデータベースをダウンロードする必要があります。これは で行われる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実行しonPostExecuteProgress Dialog.

奇妙なことに、電話をコンピューターから切断すると、進行状況ダイアログが閉じられません。電話をコンピューターに接続してアプリを実行し、ログの猫を見ている場合も同じです。デバッグモードに入ると、downloadDB終了して呼び出し元に返され、進行状況ダイアログが閉じられます。

downloadDBネットワークがオフになっているときに関数から戻るにはどうすればよいですか?

4

0 に答える 0