Как переместить загрузку из основного потока в фоновый поток с помощью Asynctask - PullRequest
0 голосов
/ 09 октября 2018

Я новичок в разработке для Android и пытаюсь понять, как загрузить несколько файлов.Я прошел краткое руководство по YouTube, которое загружает один файл PDF, но делает это в основном потоке.Есть некоторые проблемы с этим кодом, которые я тоже хочу решить, но сейчас я хотел бы знать, как включить AsyncTask в мой код для загрузки файла PDF в фоновом режиме.

Этомой код:

public class MainActivity extends AppCompatActivity {

    Button btn;
    DownloadManager downloadManager;
    private String exampleURL = "https://doc.lagout.org/programmation/Actionscript%20-%20Flash%20-%20Flex%20-%20Air/Flash%20Development%20for%20Android%20Cookbook%20-%20Labrecque%20-%20Packt%20%282011%29/Flash%20Development%20for%20Android%20Cookbook%20-%20Labrecque%20-%20Packt%20%282011%29.pdf";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn = findViewById(R.id.download_btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                downloadManager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);
                Uri uri = Uri.parse(exampleURL);
                DownloadManager.Request request = new DownloadManager.Request(uri);
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                Long reference = downloadManager.enqueue(request);
            }
        });
    }
}

Я знаю, что некоторые спросят, что там делает «Длинная ссылка», поскольку он никогда не использовался.Кроме того, он не объяснил и не использовал его нигде, но загрузка, кажется, не работает, когда я удаляю его из кода.

Другая проблема с этим кодом заключается в том, что в отличие от традиционной загрузки из приложений, таких как Chrome, вы не получите никакого сообщения о том, что ваша загрузка началась, и вам нужно перетащить виджет вниз, чтобы увидеть, идет ли загрузка.Другими словами, на экране внизу нет никаких признаков загрузки.

1 Ответ

0 голосов
/ 09 октября 2018

Вы пытаетесь решить проблему, которая не существует.

Нет смысла помещать запрос на загрузку в AsyncTask, поскольку DownloadManager уже загружает асинхронно для вас.

...