Андроид 2.1 AsyncTask загрузка файла не работает для многопоточности отлично работает при вызове одного экземпляра - PullRequest
0 голосов
/ 17 марта 2012

Я использую Android 2.1, API уровня 7 и пытаюсь осуществить асинхронную загрузку файлов с сервера локальной сети для этого я пытаюсь реализовать AsyncTask. Когда я пытаюсь вызвать один поток, он работает найти, но при вызове нескольких его просто остановить оба потока

  /* AsyncTask class*/  
          class DownloadFileAsync extends AsyncTask<String, String, String> {
                @Override
                protected void onPreExecute() {        
                    super.onPreExecute();       
                }

                @Override
                protected String doInBackground(String... aurl) {

                    int count;

                    try {
                        URL url = new URL(aurl[0]);
                        Log.i("count","in");
                        URLConnection conexion = url.openConnection();
                        Log.i("count","in1");
                        conexion.connect();
                        Log.i("count","in2");
                        File root = android.os.Environment.getExternalStorageDirectory();
                        Log.i("count","in3");
                        int lenghtOfFile = conexion.getContentLength();
                        Log.i("count","in4");        
                        BufferedInputStream input = new BufferedInputStream(url.openStream());
                        Log.i("count","in5");
                        OutputStream output = new FileOutputStream(root.getAbsolutePath() + "/video" +aurl[1] +".mp4");
                        byte data[] = new byte[1024];
                        long total = 0;
                        Log.i("count","in6");
                        while ((count = input.read(data)) != -1) {
                            //Log.i("count","in7");
                            total += count;
                            Log.i("count",aurl[1]);
                            publishProgress(""+(int)((total*100)/lenghtOfFile));
                            output.write(data, 0, count);
                        }
                        output.flush();
                        output.close();
                        input.close();          
                    } catch (Exception e) {}
                    return null;
                }

                protected void onProgressUpdate(String... progress) {        
                    Log.i("progress",progress[0]);
                }

                @Override
                protected void onPostExecute(String unused) {        
                    Log.i("process","end");       
                }
            } 

  /*main method call*/
private void startDownload() {
        Log.v("count","out");
        String url = lanurl+"titanic/video"+1+"_en.m4v";
        new DownloadFileAsync().execute(url,"1");

        url = lanurl+"titanic/video"+2+"_en.m4v";
        new DownloadFileAsync().execute(url,"2");

    }
output :
download both file in sd card
but no file downloading properly 

1 Ответ

0 голосов
/ 17 марта 2012

Я не понял полный вопрос.Но похоже, что ваша проблема связана с AsyncTask.

Один объект, созданный для AsyncTask, можно использовать только один раз.Если вы хотите использовать его снова, вам нужно создать еще один объект для того же AsyncTask.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...