Mishiranu / Dashchan

Imageboards client for Android
GNU General Public License v3.0
397 stars 49 forks source link

Загрузка фото/видео временно фризит все приложение #294

Open IS2511 opened 3 years ago

IS2511 commented 3 years ago

При нажатии кнопки скачивания сначала поверх всего выскакивает и несколько секунд висит "Обработка данных..." (что уже тормозит браузинг), а после исчезновения плашки несколько секунд и больше приложение просто не отвечает и в списке уведомлений висит статус прогресса скачивания. Получается надо очень долго (5-10 секунд + время скачивания) ждать один файл, скачивание подряд вообще пыткой становится

Раньше на пол секунды появлялась "Обработка данных..." и можно было дальше делать что хочешь (если я правильно помню)

IS2511 commented 3 years ago

Перед прогрессом скачивания в уведомлении еще какое-то время висит это:

Ожидание загрузки Необходимо подтверждение

Все еще слишком долгая плашка и фризит (полностью) во время загрузки или после

Пользоваться невозможно

N0D4N commented 3 years ago

Как временный фикс - можешь почистить папку куда приложение сохраняет файлы. Чем больше файлов в этой папке тем дольше плашка с "обработкой данных" висит на экране

IS2511 commented 3 years ago

почистить папку куда приложение сохраняет файлы

Только как временный фикс, хочется все в одном месте хранить. Хотя я уже подумываю сделать дамп на комп и почистить под 0... В любом случае хочется чтобы такое быстро работало, не могу понять что там так долго проверяется. Существует ли уже такой файл? Так там же надо проверить только 1 имя. "Обработка данных..." ладно, подождать эту проверку я готов. Но после нее фризит что-то, что явно должно быть не в основном потоке. Уже же проверили на место и копию, скачивание то не должно в основном потоке делаться ну или я не знаю. Фризов во время скачивания быть не должно

N0D4N commented 3 years ago

Ну будем ждать пока автор обратит внимание на проблему, или пока кто-нибудь разберется в чем проблема и сделает PR. Т.к. загрузка действительно похоже идет в UI потоке, из-за чего всё и фризит.

N0D4N commented 3 years ago

Полистал старые ишью, похоже проблема была описана уже в #240 и автор даже отписал почему так происходит https://github.com/Mishiranu/Dashchan/issues/240#issuecomment-694527861

N0D4N commented 3 years ago

Повторю свой коммент с вариантами решения из https://github.com/Mishiranu/Dashchan/issues/240#issuecomment-870417410 еще и здесь, если автор обратит внимание сначала на эту ишью.

Проблема с долгой загрузкой, блокируещем лоадере и фризящим UI остается, бесит и мешает браузингу даже если в папке загрузки мало файлов (<1к). Как вариант, можно загружать файлы в фоне, давая юзеру браузить дальше и в случае если окажется что такой файл в папке уже есть - сделать всплывашку, возможно с названием файла и превьюшкой, промтящей юзера на перезапись, пропуск или ренейминг. Или же при запуске приложения обходить всю папку с загрузками в фоновом потоке, строить хешсет, которую будет использовать загрузчик, и тогда проверка на наличие файла будет O(1) вместо текущего O(n) которое может быть очень долгим и выполняется при каждой загрузке. В таком случае будут проблемы если пользователь что-то наделал с папкой загрузок между запуском приложения и нажатия на кнопку загрузки, но в таком случае можно дефолтить на молчаливую перезапись, молчаливый пропуск или вывод ошибки через нотификации, опционально чтобы поведение это выбиралось в настройках. Ну и соответсвенно хешсет должен обновляться с каждым новым загруженным файлом.

Mishiranu commented 3 years ago

С фризами совершенно другая проблема. У меня, например, директория загрузок тоже состоит из большого количества файлов, и никаких фризов нет. Плашка «обработка данных» висит какое-то время (около секунды), и это связано как раз с работой SAF. После это приложение мгновенно продолжает работать без зависания.

N0D4N commented 3 years ago

Записал как это выглядит. Приложение не реагирует на свайпы некоторое время после сохранения медиафайла. т.е. фризит. Как видно, приложение фризит и если свайпать во время "обработки данных" и если начинать свайпать только после исчезновения этой плашки. На видео не попало, т.к. не знаю как это правильно записать, но плашку "Обработка данных" можно сбить нажатием клавиши назад, но общее фремя загрузки будет примерно то же, т.к. приложение будет в состоянии фриза, как на видео и не будет воспринимать команды.

https://user-images.githubusercontent.com/50947930/124353030-97d57880-dc0c-11eb-9685-f051e90445c9.mp4

IS2511 commented 3 years ago

У меня заметно дольше тупит, скорее всего из-за кучи файлов в загрузках в том числе

https://user-images.githubusercontent.com/23707032/124353686-a4f46680-dc10-11eb-8ba8-f2a4e79d64b7.mp4

ebobo1337 commented 3 years ago

На 10 андроиде на 12 миуйне все работало, в папке было 20 гиг картинок и шебм, совпадения обнаруживались мгновенно. Как 11 дрон прилетел по воздуху - начало фризить. На другом телефоне с 11 андроидом на миуйне тоже фризит.

IS2511 commented 2 years ago

Проблема в приложении все еще не решена, теперь просто больше не сижу на дваче, автору спасибо)) Если более серьезно Все еще лагает. Ждем фикс или отзыв хоть какой-нибудь, скажи что делать то, логи какие-нибудь прислать, хз