私のアプリは、インターネットからデータベースをダウンロードする必要があります。これは で行われる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
ネットワークがオフになっているときに関数から戻るにはどうすればよいですか?