Android : AsyncTask, how can update ProgressDialog increment

前端 未结 1 833
花落未央
花落未央 2020-12-09 13:43

I want to parse a webpage and visual a progressdialog style horizontal and increment it byte to byte, it\'s possibile ?

相关标签:
1条回答
  • 2020-12-09 14:15

    Try something like this,

    Create a ProgressDialog.

    ProgressDialog mProgressDialog = new ProgressDialog(Your_Activity.this);
    mProgressDialog.setMessage("Here you can set a message");
    mProgressDialog.setIndeterminate(false);
    mProgressDialog.setMax(100);
    mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    mProgressDialog.show();
    MyAsyncTask obj = new MyAsyncTask ();
    obj.execute("url");
    

    Your AsyncTask Class.

    private class MyAsyncTask extends AsyncTask<String, Integer, String>{
        @Override
        protected String doInBackground(String... url) {
            int count;
            try {
                URL url = new URL(url[0]);
                URLConnection connection = url.openConnection();
                connection.connect();
                // this will be useful so that you can show a tipical 0-100% progress bar
                int length = connection.getContentLength();
    
                // downlod the file
                InputStream input = new BufferedInputStream(url.openStream());
                OutputStream output = new FileOutputStream("/sdcard/file_name.txt");
    
                byte data[] = new byte[1024];
    
                long total = 0;
    
                while ((count = input.read(data)) != -1) {
                    total += count;
                    // publishing the progress....
                    publishProgress((int)(total*100/length));
                    output.write(data, 0, count);
                }
                output.flush();
                output.close();
                input.close();
            } catch (Exception e) {}
            return null;
        }
        @Override
        public void onProgressUpdate(String... args){
            mProgressDialog.setProgress(args[0]);
         }
      }
    }
    

    You have to give these Permission's in the AndroidManifest file.

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
    0 讨论(0)
提交回复
热议问题