Загрузка одного файла с помощью AsyncTask - PullRequest
0 голосов
/ 28 октября 2018

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

Должен ли я создать URI и другие необходимые объекты подключения в onCreate или в методе doInBackground класса AsyncTask?

Чтобы загрузить только один файл PDF, какие объекты мне нужно вызывать?

Я проверил документацию, но не смог ее понять.Я был бы признателен за разъяснения непрофессионала и, возможно, псевдокод.

Вот код, который у меня есть:

public class MainActivity extends AppCompatActivity {
    Button downloadPDF;
    DownloadingClass downPDF;
    private static final String TAG = "omar.asynctaskdemo;";

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

        String urlExample = "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");

        downloadPDF = findViewById(R.id.download_pdf);
        downPDF = new DownloadingClass();

        downloadPDF.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                downPDF.execute();
            }
        });
    }

    private class DownloadingClass extends AsyncTask<String, Integer, Void>{
        @Override
        protected Void doInBackground(String... strings) {
            return null;
        }
    }
}

1 Ответ

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

AsyncTask просто запускает ваш код в фоновом потоке.Для загрузки pdf-файла, как и для любого другого файла.

Вам потребуется использовать HttpUrlConnection, создать FileOutputStream и написать inputstream.См. this

Выполните код выше в doInBackground класса AsyncTask и лучше передайте URL в конструкторе и сделайте все внутри метода doInBackground.Поскольку вы не хотите блокировать поток пользовательского интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...