Здесь я попытался загрузить файл из утилиты просмотра с помощью Asynctask. Загрузка загружается в метод 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
, и я попытался остановить этот процесс из-за держателя, как показано ниже.
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 Как остановить загрузку задачи, которая выполняется в режиме просмотра или просмотра списка