我想更好地理解firebase.storage.StorageTask.cancel()的行为,如文档here所述。
我正在创建一个UploadTask,目的是将图片上传到Firebase存储。
// Create an UploadTask
final UploadTask mUploadTask = storageRef.putFile(_photoUri);
// Add Listeners to mUploadTask.
mUploadTask_ChangeProfilePhoto
.addOnPausedListener(new OnPausedListener<UploadTask.TaskSnapshot>() {
@Override
public void onPaused(UploadTask.TaskSnapshot taskSnapshot) {
Log.d(TAG, "mUploadTask: onPaused: ");
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
Log.d(TAG, "mUploadTask: : onProgress: ");
}
})
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Log.d(TAG, "mUploadTask: onSuccess");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e(TAG, "mUploadTask: On Failure", e);
}
});
UploadTask开始工作后的随机数毫秒,我尝试取消UploadTask:
// Attempt to cancel the UploadTask some seconds after it's started.
boolean canBeCancelled = mUploadTask.cancel();
Log.d(TAG, "mUploadTask CAN BE CANCELLED: " + canBeCancelled);
如上所述here,canBeCancelled
应为:
如果此任务已成功取消或正在取消,则为true。如果任务已完成或处于无法取消的状态,则返回false。
如果canBeCancelled
为true
,则立即取消UploadTask或至少最终取消。
canBeCancelled
为true
,则在1-3秒后取消UploadTask,而不是立即取消。这是logcat中提供的时间。上述情况产生了三个问题:
mUploadTask.cancel()
返回true
并且UploadTask最终被取消时(如案例1中所示),在发出取消命令和取消UploadTask之间有1-3秒的延迟是正常的?mUploadTask.cancel()
返回true
时,这是否表示UploadTask最终会被取消,或者上传任务是否仍然可以完成或失败(如案例2中所示)?提前填写任何输入!