Кто-нибудь может сказать мне, что не так с этой строкой кода - PullRequest
0 голосов
/ 16 марта 2020
new Runnable() {
           public void run() {
               try {
                   //Bitmap bitmap = Picasso.with(getActivity()).load(Uri.parse(mNewMember.getMemberImageUri())).resize(300, 300).get();
                   Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), Uri.parse(mNewMember.getMemberImageUri()));
                   ByteArrayOutputStream stream = new ByteArrayOutputStream();
                   bitmap.compress(Bitmap.CompressFormat.JPEG, 10, stream);
                   byte[] imageData = stream.toByteArray();
                   FirebaseStorage.getInstance().getReference()
                           .child("member images\\")
                           .child(mNewMember.getMemberId() + ".jpg").putBytes(imageData);
               }catch (IOException e){Log.d("db","machhar");}
       }
       }.run();

Так что в настоящее время он загружает изображение в хранилище базы данных, но если я раскомментирую закомментированную строку и прокомментирую строку под ней, то изображение не будет загружено и не будет сгенерировано никакой ошибки. Я также попытался подключить прослушиватель ошибок. также не вызывается. Хотя обе строки возвращают растровое изображение, почему первая строка (с комментариями) не работает, а вторая - работает. Также, если я использую первую строку, мне нужно запустить ее в фоновом потоке, в противном случае она выдаст ошибку.

Пожалуйста, объясните

1 Ответ

1 голос
/ 16 марта 2020

Закомментированная строка является асинхронной, и поэтому весь ваш код будет продолжать выполняться немедленно, вместо того, чтобы ждать его завершения.

Вы можете использовать Picasso с обратным вызовом завершения для ожидания результата.

Взгляните на этот ответ

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