Я пытаюсь запустить метод с именем uploadProfilePhoto () , но код после вызова этого метода запускается первым, даже если uploadProfilePhoto () не завершен sh. Могу ли я в любом случае разрешить uploadProfilePhoto () fini sh, прежде чем продолжить, это процесс?
Я пытался использовать AsynTask, но он все еще не работает. Похоже, это потому, что doInBackground () для серии кода, а не метода.
AsyncTask
protected class MyAsyncTask extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... params) {
uploadProfilePhoto();
return null;
}
@Override
protected void onPostExecute(Void result) {
Toast.makeText(ProfileSetup.this, "Account created successfully.", Toast.LENGTH_SHORT).show();
mAuth.signInWithEmailAndPassword(email, password);
startActivity(new Intent(ProfileSetup.this, MainActivity.class));
}
}
uploadProfilePhoto ()
private void uploadProfilePhoto() {
if (mImageUri != null) {
final StorageReference imageReference = storageReference.child(System.currentTimeMillis() + "." + getFileExtension(mImageUri));
storageTask = imageReference.putFile(mImageUri);
storageTask.continueWithTask(new Continuation() {
@Override
public Task<Uri> then(@NonNull Task task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
return imageReference.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
Uri downloadUri = task.getResult();
myUrl = downloadUri.toString();
String myid = getIntent().getStringExtra("uid");
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users").child(myid);
reference.child("profilePicUrl").setValue(myUrl);
finish();
} else {
Toast.makeText(ProfileSetup.this, "Failed", Toast.LENGTH_SHORT).show();
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(ProfileSetup.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
} else {
Toast.makeText(this, "No image selected", Toast.LENGTH_SHORT).show();
}
}