Я делаю приложение, при нажатии на которое должен быть загружен выбранный список композиций, и мне нужно начать загрузку файла только в том случае, если файл до завершения загрузки. Есть ли способ подтвердить это?Проверьте, когда файл закончил загрузку в Eclipse
ответ
Я не Android или многопоточной эксперта, так что может быть более эффективные способы сделать это, но от того, что я помню, вы могли бы использовать Executors для этого сценария, как
ExecutorService es = Executors.newFixedThreadPool(1);// allow only one task to run,
// place rest of task in queue
es.execute(new Runnable() {
@Override
public void run() {
//download file one
}
});
es.execute(new Runnable() {
@Override
public void run() {
//download file two
}
});
Загрузка файла второй задачи будет выполняется только в том случае, если код предыдущей задачи завершится.
Будет ли это работать, если я выберу цикл вокруг него ? Плюс, я открою загружаемую ссылку. Следовательно, задача состоит только в том, чтобы открыть ссылку через браузер или менеджер загрузок по умолчанию. –
@VirenChugh Я не вижу причины, почему это не сработает, но, как я уже сказал, я не специалист по Android. Вам нужно попробовать. Или, возможно, сначала взгляните на ссылку, предоставленную @ MarcinErbel в комментарии по вашему вопросу. Этот ответ кажется разумным. – Pshemo
Пробовал. Я тоже понимаю эту концепцию. Одновременно открывает обе ссылки. Это связано с тем, что моя функция не загружает файл, а просто открывает ссылку, которая запускает загрузку. Следовательно, как только это будет сделано, он переходит к следующему файлу. Но это действительно помогает мне в другом проекте, так что спасибо. :) –
Вы должны использовать транзакции и асинхронную связь. Другим способом я мог бы использовать простую очередь с синхронизированными потоками –
Не могли бы вы привести мне пример? Или ссылку? Было бы полезно. –
Я думаю, что Pshemo написал хороший ответ, вы также можете посмотреть там: http://stackoverflow.com/questions/8323955/download-files-in-queue-in-android –