单击按钮后,我需要将图像列表上传到Firebase存储,然后销毁该活动,而无需用户采取任何其他操作。
我下面的代码在单击按钮后立即破坏了活动,并让上传进度仍在后台进行。
我想要的是在等待上载进度首先完成之后破坏活动。
我该怎么做才能解决此问题?
// on button click
public void send(View view) {
imageCount = 0;
imageKey = databaseReference.push().getKey();
uploadFile( bitmaps );
intent.putExtra( "location", location);
intent.putExtra( "description", description);
intent.putExtra("date", date);
setResult( 1, intent );
finish();
}
private void uploadFile(final ArrayList<Bitmap> bitmaps) {
FirebaseStorage storage = FirebaseStorage.getInstance();
for (final Bitmap bitmap : bitmaps) {
final StorageReference imageRef = storage
.getReferenceFromUrl( "gs://example.appspot.com/" )
.child( folderName + "/" + UUID.randomUUID() + ".jpeg" );
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress( Bitmap.CompressFormat.JPEG, 20, baos );
byte[] data = baos.toByteArray();
UploadTask uploadTask = imageRef.putBytes( data );
uploadTask.addOnFailureListener( new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
Toast.makeText( LaporActivity.this, "Fail", Toast.LENGTH_SHORT ).show();
}
} ).addOnSuccessListener( new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
imageRef.getDownloadUrl().addOnSuccessListener( new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
databaseReference.child( "images" ).child( imageKey ).child( Integer.toString( imageCount ) ).setValue( uri.toString() );
imageCount++;
}
} );
}
} );
}
}
答案 0 :(得分:0)
上传完成后,只需在回调中调用finish()。