ProgressDialog застрял с помощью AsyncTask - PullRequest
0 голосов
/ 14 марта 2019

Я использую AsyncTask для загрузки изображений, все работает нормально. Прямо сейчас единственная проблема, с которой я сталкиваюсь, это то, что диалог прогресса застрял и завис. ниже мой код, может кто-нибудь помочь мне с этим. Я добавил startLoading в pre-execute и боковую загрузку в метод post-execute AsyncTask. После публикации я открываю один нижний лист, чтобы поделиться загруженными изображениями с социальными сетями. извините за плохой английский

public class ImageSaveTask extends AsyncTask<String, Void, Void> {
        private Context context;

        private ImageSaveTask(Context context) {
            this.context = context;
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            startLoading();
        }



        @Override
        protected Void doInBackground(String... params) {


            prodImageUri.clear();
            int ii = 0;
            for (int k=0;k<resellerProductLists.get(globalPosition).getProductImageDtoList().size();k++) {
                //Toast.makeText(context,resellerProductLists.get(0).getProductImageDtoList().get(k).getImageUrl(),Toast.LENGTH_SHORT).show();
                Log.e("Image",resellerProductLists.get(globalPosition).getProductImageDtoList().get(k).getImageUrl());
                ii++;
                String img = "IMG-";
                String mPath = Environment.getExternalStorageDirectory().toString() + "/Temp/" + img + ii + ".jpg";
                File Directory = new File(Environment.getExternalStorageDirectory().toString() + "/Temp");
                Directory.mkdirs();
                try {
                    File file = Glide.with(context)
                            .load(resellerProductLists.get(globalPosition).getProductImageDtoList().get(k).getImageUrl())
                            .downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
                            .get();

                    File imageFile = new File(mPath);

                    InputStream in = null;
                    OutputStream out = null;

                    try {
                        in = new BufferedInputStream(new FileInputStream(file));
                        out = new BufferedOutputStream(new FileOutputStream(mPath));

                        byte[] buf = new byte[1024];
                        int len;
                        while ((len = in.read(buf)) > 0) {
                            out.write(buf, 0, len);
                        }
                        out.flush();
                    } finally {
                        if (in != null) {
                            try {
                                in.close();
                            } catch (IOException e1) {
                                e1.printStackTrace();
                            }
                        }

                        if (out != null) {
                            try {
                                out.close();
                            } catch (IOException e1) {
                                e1.printStackTrace();
                            }
                        }
                    }

                    prodImageUri.add(Uri.fromFile(new File(String.valueOf(imageFile))));
                } catch (InterruptedException | ExecutionException | IOException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void res) {
            super.onPostExecute(res);
            //prodImageUri1.addAll(prodImageUri);


            if(single_rdb.isChecked())
            {
                createImageBitmap();
            }
            else if(allimg_rdb.isChecked())
            {
                temps=new ArrayList<>();
                for(int i=0;i<prodImageUri.size();i++)
                {
                    if(i==8)
                    {
                        break;
                    }
                    temps.add(prodImageUri.get(i));
                    // System.out.println("SIZE "+temps.size()+"TEST1 "+temps.get(i));
                    createImageBitmap();
                }

            }

            if(btn_click.equals("W"))
            {

                initSHareBottom("com.whatsapp", "WhatsApp");
            }
            else if(btn_click.equals("F"))
            {
                initSHareBottom("com.facebook.katana", "Facebook");
            }
            else if(btn_click.equals("default"))
            {
                addPhotoBottomDialogFragment =
                        new BottomSheetSharingFragment1();
                addPhotoBottomDialogFragment.show(((FragmentActivity)context).getSupportFragmentManager(),
                        "add_photo_dialog_fragment");
            }
            hideLoading();
        }
    }
...