1
Я использую следующий код для загрузки файла с сервера:Android активной загрузки темы
URL url = new URL(urlString);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(false);
urlConnection.connect();
StorageTools.maintainMemoryEmptyThreshold(25);
if (tempFolderFile.createNewFile()) {
tempFolderFile.createNewFile();
}
FileOutputStream fileOutput = new FileOutputStream(tempFolderFile);
InputStream inputStream = urlConnection.getInputStream();
int totalSize = urlConnection.getContentLength();
int downloadedSize = 0;
byte[] buffer = new byte[8096];
int bufferLength = 0;
while ((bufferLength = inputStream.read(buffer)) > 0) {
fileOutput.write(buffer, 0, bufferLength);
downloadedSize += bufferLength;
LOGGER.debug("Progress: downloadedSize: " + downloadedSize + "totalSize: " + totalSize);
}
fileOutput.close();
if (downloadedSize == totalSize) {
LOGGER.info("Downloaded at " + tempFolderFile.getAbsolutePath());
StorageTools.moveFile(tempFolder, targetFolder, fileName);
return true;
}
Я запускать загрузку, используя новую нить в TempFolder, переместите его в нужную папку после завершения загрузки. Как поддерживать ограничение количества активных потоков загрузки и добавлять оставшиеся загрузки в очередь?
Кроме того, следующие мои опасения в связи с этим:
- Есть ли способ, в котором я могу включить Threadpool исполнитель для очереди загрузки с помощью описанных выше функций?
- Буфер влияет на скорость загрузки?