首页 > 解决方案 > 谁能告诉我那行代码有什么问题

问题描述

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();

所以目前它正在将图像上传到firebase存储但是如果我取消注释注释行并注释它下面的行,那么图像不会被上传并且不会产生错误我也尝试附加失败监听器,它也不会被调用。虽然这两行都返回一个位图,但为什么第一行(注释)不起作用,而第二行起作用。此外,如果我使用第一行,我必须在后台线程中运行它,否则会产生错误。

请解释

标签: androidmultithreadingfirebase

解决方案


注释行是异步的,因此您的其余代码将继续立即执行,而不是等待它完成。

您可以将毕加索与完成回调一起使用以等待结果。

看看这个答案


推荐阅读