该方法应该返回 downloadUrl ,但始终返回null,很奇怪的是,我可以在日志中看到 URL
private String profileUrlPath(byte[] profile){
mStorageReference.child("card_profile").child(userId+".jpg").putBytes(profile).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
profilepathref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
if(uri != null){
profileUrl = uri.toString();
Log.d(TAG, "profile image Url: " + profileUrl);
}
}
});
}
});
return profileUrl;
}
答案 0 :(得分:1)
您在异步任务上注册成功处理程序。无法保证何时执行行profileUrl = uri.toString();
。
很有可能不在profileUrlPath
返回之前。
此外,可能存在并发问题。
答案 1 :(得分:0)
像这样
private String profileUrlPath(byte[] profile){
mStorageReference.child("card_profile").child(userId+".jpg").putBytes(profile).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
profilepathref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
if(uri != null){
profileUrl = uri.toString();
Log.d(TAG, "profile image Url: " + profileUrl);
return profileUrl;
}
}
});
}
});
return null;
}