保持android中方向更改的进度条进度

时间:2014-11-13 13:21:06

标签: android android-progressbar

我正在尝试使用AsyncTask从服务器下载多个视频,我有视频的进度条列表,但我无法保持每个进度条在我的手机更改方向上的进度。

我在downlodThreadVideos()

的适配器中调用listview
public UserVideoDTO downlodThreadVideos(final ProgressBar _progress, ImageView _imgLaunch, ImageView _imgDownload, UserVideoDTO  vpideoDTO)
    {
        DownloadVideoFileAsyncTask mDownloadFileAsync = new DownloadVideoFileAsyncTask(videoDTO,_progress,_imgLaunch,_imgDownload);
        mDownloadFileAsync.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,videoDTO);

        return mDownloadFileAsync._videoDTO;
    }

private class DownloadVideoFileAsyncTask extends AsyncTask<UserVideoDTO, Integer, UserVideoDTO> {
        ProgressBar _progress;
        ImageView _imgLaunch;
        ImageView _imgDownload;
        public UserVideoDTO  _videoDTO;

        String OfflinePath=null;

        public DownloadVideoFileAsyncTask(UserVideoDTO  videoDTO,ProgressBar progress, ImageView imgLaunch, ImageView imgDownload) {
            // TODO Auto-generated constructor stub
            _videoDTO=videoDTO;
            _progress = progress;
            _imgLaunch=imgLaunch;
            _imgDownload=imgDownload;           
        }

        protected UserVideoDTO doInBackground(UserVideoDTO... params) {

            UserVideoDTO videoDTO = _videoDTO;
            try {
                String _videoURL="http://mylinkforvideodownload/videoDTO.onlinepath";

                if (cancelThread)
                    return null;
                String Path = new String(_videoURL);

                Path = Path.replaceAll(" ", "%20");

                URL url = new URL(Path);

                long startTime = System.currentTimeMillis();

                HttpURLConnection ucon = (HttpURLConnection) url.openConnection();

                ucon.setConnectTimeout(60000);

                File folder = new File(getExternalFilesDir(null).getAbsolutePath()+"/Download");

                folder.mkdir();


                String fileName = getExternalFilesDir(null).getAbsolutePath()+ "/Download/videos_";
                File file = new File(fileName);
                String offlineFileName = videoDTO.lmsvideoid;
                String offlineFilePath = file + offlineFileName + ".mp4";
                BufferedInputStream inStream = new BufferedInputStream(ucon.getInputStream());
                FileOutputStream outStream = new FileOutputStream(offlineFilePath);
                byte[] buff = new byte[1024];
                int lengthOfFile = ucon.getContentLength();

                int len;
                long total = 0;
                try {
                    while (!cancelThread && ((len = inStream.read(buff)) != -1)) {
                        total += len;
                        publishProgress((int) ((total * 100) / lengthOfFile));
                        outStream.write(buff, 0, len);
                    }
                } catch (Exception e) {
                    cancelThread = true;
                }
                outStream.flush();
                outStream.close();
                inStream.close();
                }
             catch (Exception e) {
                e.printStackTrace();
            }
            return videoDTO;
        }

        protected void onProgressUpdate(Integer... progress) {
            Log.d("ANDRO_ASYNC", progress[0].toString());

            _progress.setProgress(progress[0]);
        }

        protected void onPreExecute() {
            super.onPreExecute();
            _progress.setMax(100);
        }

        protected void onPostExecute(UserVideoDTO result) {
            super.onPostExecute(result);

            _progress.setProgress(100);
        }

        protected void onCancelled() {
            super.onCancelled();
        }
    }

0 个答案:

没有答案