【发布时间】:2020-07-14 08:52:18
【问题描述】:
在这里,我尝试使用 Asynctask 从 recyclerview 上传文件。 doInBackground(MyTaskParams...params) 方法中设置的上传工作。 我做了什么
@Override
protected Boolean doInBackground(MyTaskParams... params)
{
Thread.currentThread().setName(params[0].message_push_id);// here i set the background therad name
filepath.putFile(sendingImageURI).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
}
}).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(
UploadTask.TaskSnapshot taskSnapshot)
{
double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
Intent intent=new Intent("data_changed");
intent.putExtra("UploadProgress",(int)progress);
intent.putExtra("UploadPosition",newPosition);
intent.putExtra("UploadPushId",message_push_id);
Log.i("atsender",String.valueOf((int)progress)+":"+String.valueOf(newPosition)+":"+message_push_id);
LocalBroadcastManager.getInstance(MessageActivity.this).sendBroadcast(intent);
}
});
我通过LocalBroadcastManager 在适配器类中收到了这个进展,我试图从 holderview 中停止这个过程,如下面的代码。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Thread thread=getThreadByName(pushId);
if (pushId==null)
{
Log.i("thread_status", "there no active thread named of "pushId");
}
else
{
thread.interrupt();
}
}
});
通过使用thread.interrupt();上传进度不会停止它仍然返回上传进度。
SO如何停止上传在recyclerview或listview中运行的任务
【问题讨论】:
标签: android firebase android-asynctask firebase-storage