проблема с AsyncTask и Thread

237
14 апреля 2017, 20:20

Хотел загрузить файл на сервер..но с потоками проблемы... пробовал без ProgressDialog-а а файл на сервер все равно не загружается.Вот код.С ProgressDialog получаю ошибку.А без ProgressDialog не вижу происходит ли что нибудь вообще.

class MyAsync extends AsyncTask<Void,Void,Void>{
            @Override
            protected void onProgressUpdate(Integer... values) {
                super.onProgressUpdate(values);
                progressDialog.show();
            }
            @Override
            protected Void doInBackground(Void... voids) {
                progressDialog = new ProgressDialog(getApplicationContext());
                progressDialog.setTitle("загрузка");
                progressDialog.setMessage("Загрузка");
                publishProgress();
                String content_type = getMimeType(file.getPath());
                OkHttpClient client = new OkHttpClient();
                RequestBody fileBody  = RequestBody.create(MediaType.parse(content_type),file);
                RequestBody requestBody = new MultipartBody.Builder()
                        .setType(MultipartBody.FORM)
                        .addFormDataPart("type",content_type)
                        .addFormDataPart("uploaded_file",file.getName().toString(),fileBody)
                        .build();
                Request request =  new Request.Builder()
                        .url("http://urlll")
                        .post(requestBody)
                        .build();
                try {
                    Response response = client.newCall(request).execute();
                    if(!response.isSuccessful()){
                        throw new IOException("Error :"+response);
                    }
                }catch(IOException ex){}
                return null;
            }
        }

делал и с Thred-ом

      Thread t = new Thread(new Runnable() {
             @Override
             public void run() {
                 progressDialog = new ProgressDialog(getApplicationContext());
            progressDialog.setTitle("загрузка");
            progressDialog.setMessage("Загрузка");
            publishProgress();
            String content_type = getMimeType(file.getPath());
            OkHttpClient client = new OkHttpClient();
            RequestBody fileBody  = RequestBody.create(MediaType.parse(content_type),file);
            RequestBody requestBody = new MultipartBody.Builder()
                    .setType(MultipartBody.FORM)
                    .addFormDataPart("type",content_type)
                    .addFormDataPart("uploaded_file",file.getName().toString(),fileBody)
                    .build();
            Request request =  new Request.Builder()
                    .url("http://urlll")
                    .post(requestBody)
                    .build();
            try {
                Response response = client.newCall(request).execute();
                if(!response.isSuccessful()){
                    throw new IOException("Error :"+response);
                }
            }catch(IOException ex){}
             }
         });
    t.start();

Но опять получаю ошибку с потоком.Вроде делаю на стороне от основного потока.Но все равно выходит ошибка что это в основном потоке.

Answer 1

В случае с AsyncTask, Вам следует перенести инициализацию progressDialog в метод onPreExecute(), а скрытие progressDialog в метод onPostExecute(). В Вашем случае использование метода onProgressUpdate - не имеет смысла.

READ ALSO
XStream сериализация объекта в XML

XStream сериализация объекта в XML

Есть объектУ него есть несколько объектов, которые содержат в себе переменные типа List<String>

201
Выбрать сразу несколько записей из select

Выбрать сразу несколько записей из select

Добрый день! Нужно выбрать сразу несколько записей из select, и отправить запрос

216
Эфект на клик jquery

Эфект на клик jquery

Ума не приложу как сделать банальную вещьЕсть список

180
Помощь в создании сайта (html, css, php, js, mysql) [требует правки]

Помощь в создании сайта (html, css, php, js, mysql) [требует правки]

Доброго времени суток, форумчанеПо дипломному проекту мне задали создание сайта, на котором можно будет распространять платные курсы, которые...

192