Остановить загрузку файлов из firebase в android? - PullRequest
0 голосов
/ 02 апреля 2020

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

1 Ответ

0 голосов
/ 02 апреля 2020

Firebase Storage SDK уже выполняет все сетевые и дисковые операции ввода-вывода в отдельном потоке, поэтому вам не нужно оборачивать это в AsyncTask самостоятельно.

Вы можете отменить загрузку Firebase, вызвав cancel() в задаче загрузки. См. Документацию Firebase по мониторингу закачек . На основании этого:

UploadTask task = filepath.putFile(sendingImageURI);
task.addOnCompleteListener(...
);

task.cancel();
...