私はほとんどすべての同様のトピックを読みましたが、解決策を見つけることができませんでした。それで、私は自分自身に尋ねることに決めました。
ファイルをダウンロードして、操作中に進行状況ダイアログを表示したい。ファイルは正常にダウンロードされます。
最初の問題は、ダウンロード操作中にプログレスバーが更新されないことです。%0のままで、ダウンロードが完了すると、ダイアログは期待どおりに消えます。
2番目の問題は、これに偶然気づいたことです。アクティビティが更新されると(たとえば、画面の向きが変更された場合)、ダイアログは消えますが、ダウンロードは続行されます。
誰かが助けてくれることを願っています。
これが私のコードです:
package com.mehmetakiftutuncu.downloadunzipshow;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener
{
    final String LOG_TAG = "DownloadUnzipShow";
    final String RELATIVE_PATH = "mehmetakiftutuncu";
    final String FILE_NAME = "...";
    final String FILE_URL = "...";
    final String FULL_PATH = Environment.getExternalStorageDirectory().getPath() + "/" + RELATIVE_PATH + "/";;
    Button buttonDownload, buttonUnzip, buttonShow;
    ProgressDialog progressDialog;
    public class MyFileDownloader extends AsyncTask<String, String, String>
    {
        boolean isSuccessful = true;
        InputStream inputStream;
        OutputStream outputStream;
        @Override
        protected void onPreExecute()
        {
            super.onPreExecute();
            prepareProgressDialog();
            Log.d(LOG_TAG, "Downloading: " + FILE_URL + " to " + FULL_PATH + FILE_NAME);
        }
        @Override
        protected String doInBackground(String... params)
        {
            int count;
            try
            {
                URL url = new URL(params[0]);
                URLConnection connection = url.openConnection();
                connection.connect();
                int lengthOfFile = connection.getContentLength();
                File path = new File(FULL_PATH);
                if(!path.exists())
                {
                    path.mkdir();
                }
                inputStream = new BufferedInputStream(url.openStream());
                outputStream = new FileOutputStream(FULL_PATH + FILE_NAME);
                byte[] data = new byte[1024];
                long total = 0;
                int percentage = 0;
                while((count = inputStream.read(data)) != -1)
                {
                    total += count;
                    percentage = (int) ((total / lengthOfFile) * 100);
                    publishProgress(String.valueOf(percentage));
                    outputStream.write(data, 0, count);
                }
                outputStream.flush();
                outputStream.close();
                inputStream.close();
            }
            catch(Exception e)
            {
                isSuccessful = false;
                Log.e(LOG_TAG, "An error occured while downloading. Details: " + e.getMessage());
            }
            return null;
        }
        @Override
        protected void onProgressUpdate(String... values)
        {
            super.onProgressUpdate(values);
            progressDialog.setProgress(Integer.parseInt(values[0]));
        }
        @Override
        protected void onPostExecute(String result)
        {
            super.onPostExecute(result);
            if(isSuccessful)
            {
                Log.d(LOG_TAG, "File is successfully downloaded to: " + FULL_PATH + FILE_NAME);
            }
            progressDialog.dismiss();
        }
    }
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        buttonDownload = (Button) findViewById(R.id.button_download);
        buttonDownload.setOnClickListener(this);
    }
    private void prepareProgressDialog()
    {
        progressDialog = new ProgressDialog(this);
        progressDialog.setTitle(getString(R.string.dialog_title));
        progressDialog.setMessage(getString(R.string.dialog_message) + FILE_URL);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.setMax(100);
        progressDialog.setCancelable(false);
        progressDialog.show();
    }
    @Override
    public void onClick(View v)
    {
        switch(v.getId())
        {
            case R.id.button_download:
                new MyFileDownloader().execute(FILE_URL);
                break;
        }
    }
}