Я пытаюсь обработать несколько команд записи файлов (для разделения файлов) без зависания пользовательского интерфейса.
Чтобы поставить мой вопрос в контексте, представьте следующее
Мое основное приложение выглядит как файловый менеджер. В настоящее время он видит 10 файлов каждый размером около 5 МБ. (Не беспокойтесь о том, как работает этот список и т. Д.)
Когда я выбираю один элемент файла, я хочу, чтобы он немедленно начал копировать / дублировать файл в другое место на SD-карте. Обычно это занимает несколько секунд
Я хочу иметь возможность выбрать второй или третий файл и т. Д. Сразу после первого. В конце концов, все файлы, которые я выбрал, будут продублированы. Так что я могу, например, щелкнуть 5 файлов в течение 5 секунд, но все действия по копированию занимают минуту.
На данный момент мне на ум пришло два варианта:
Первое - просто поместить команды записи файлов каждого файла в отдельный поток. Псевдокод будет выглядеть так
Onclick
new Thread()
write file
Если это работает, могут быть сценарии, когда у меня одновременно работает 10 потоков, записывающих в 10 отдельных файлов. Я хотел бы знать, делал ли кто-то это раньше, и что я должен высматривать
Второй вариант, конечно, если уже существует определенная структура данных / известные методы, которые могут решить эту проблему. Какая-то ожидающая система очередей, которая увеличивается по мере добавления запросов, но уменьшается по мере того, как система записывает данные.