Тёмный

Многопоточность. Часть 2. AsyncTask [RU, Android] / Мобильный разработчик 

Mobile Developer
Подписаться 51 тыс.
Просмотров 8 тыс.
50% 1

Всем привет. Этим видео я хотел бы начать курс по многопоточности на своем канале. Поэтому здесь будет только базовая информация, однако, и она может быть полезной.
Полезные ссылки
=======================
Ссылка на исходный код - github.com/Ale...
Ссылка на публичное АПИ -
chroniclingame...
Ссылка на первое видео о многопоточности -
• Многопоточность. Часть...
=======================
Конкурс.
Развернутая форма - yadi.sk/i/24Ae...
Свернутая форма - yadi.sk/i/Dmk1...
Мобильный разработчик в других соц. сетях
=======================
Вконтакте - mdeveloper
Instagram - / nplau
=======================
Наши друзья и информационные партнеры:
t.me/androidev - Телеграмм канал, посвященный разработке для Андроид!
loftblog - Блок о разработке приложений и не только
Стать Патроном канала и получить доступ к уникальному материалу
/ mobiledeveloper
Поддержать канал рублем:
PayPal - alexgladkov@icloud.com
Mastercard - 5536 9137 9985 0652
Ставь лайк, подписывайся и пиши, чтобы ты хотел увидеть в следующих видео.

Опубликовано:

 

10 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 42   
@MobileDeveloper
@MobileDeveloper 5 лет назад
Кто-то сегодня пожертвовал мне денег на развитие канала. Хочу сказать огромное спасибо этому человеку, если вы будете присылать на мою почту - mobiledevelopercourse@gmail.com свой никнейм, я буду публиковать вначале видео ник и сумму, чтобы отблагодарить этих людей. Реквизиты для помощи каналу в описании к видео.
@YulyaUlyanova
@YulyaUlyanova 2 года назад
Первое видео было понятным, как раз для новичков, а в этом уже трудно воспринимается, когда не знаешь о чём речь. Лучше мне кажется писать код и сразу же говорить для чего. А с этими заготовками ничего не поняла ((
@sexol1235
@sexol1235 5 лет назад
Ура, дождались
@MobileDeveloper
@MobileDeveloper 5 лет назад
Сам рад )
@andrii_gepbl4_from_deddom
@andrii_gepbl4_from_deddom 4 года назад
Спасибо за видео) после собеседований понял что немного хромаю в многопоточности подтягиваю по твоим урокам
@MobileDeveloper
@MobileDeveloper 4 года назад
Рад, что видео помогают ))
@alexandervasuho3534
@alexandervasuho3534 2 года назад
На какую вакансию собеседовались?
@serggio88888
@serggio88888 4 года назад
Офигннно разъясняешь))
@MobileDeveloper
@MobileDeveloper 4 года назад
Спасибо ))
@preenxus3425
@preenxus3425 5 лет назад
йухууу, новое видео. смотрим))
@MobileDeveloper
@MobileDeveloper 5 лет назад
Ееее)
@stovosemnadcactikar2139
@stovosemnadcactikar2139 2 года назад
Спасибо, хорошее полезное видео
@it-6411
@it-6411 5 лет назад
Лоадеры, кстати, deprecated с 28-го апи
@MobileDeveloper
@MobileDeveloper 5 лет назад
Ну это не удивительно, учитывая что их никто уже не юзает )
@GrandCkay
@GrandCkay 2 года назад
подскажите как вы такие api находите? 10:00
@MrLOLs1
@MrLOLs1 4 года назад
Спасибо
@MobileDeveloper
@MobileDeveloper 4 года назад
Рад, что понравилось )
@marybordunova673
@marybordunova673 4 года назад
Спасибо большое за ролик. Я правильно понимаю, что при объявлении AsyncTask следует использовать статический внутренний класс , иначе AsyncTask будет ссылаться неявно на нашу activity. Тогда в случае , если произойдет переворот экрана, garbage collector не сможет ее удалить, т.к. task все еще будет выполняться и иметь ссылку на нее?
@MobileDeveloper
@MobileDeveloper 4 года назад
Не совсем так ) статический внутренний класс нужно и можно использовать главное не забывать держать ссылку на Активити в Weak Reference )
@user-ph2sk4sp7e
@user-ph2sk4sp7e 5 лет назад
Спасибо большое за видео. А какой критерий добавления кода в PreExecute, ведь мы можем настроить Retrofit и в методе doInBackground. Зачем нам PreExecute?
@MobileDeveloper
@MobileDeveloper 5 лет назад
В принципе, конкретно в таком случае не принципиально. Но если вы хотите чтоб у вас крутилка заработала (загрузчик) то только onPreExecute потому что он работает в главном потоке и с фонового потока у вас просто это не выйдет сделать. Кстати, вы получили ответы на свои вопросы про навигацию и тосты?) Или надо дообъяснить?
@user-ph2sk4sp7e
@user-ph2sk4sp7e 5 лет назад
​@@MobileDeveloper Да, спасибо за ответы на вопросы. В принципе всё ясно) А по поводу реализации "крутилки" только при помощи OnPreExecute - я видел ещё решение, когда критерии для её появления выносили в OnProgressUpdate и взаимодействовали с UI через него))
@MobileDeveloper
@MobileDeveloper 5 лет назад
Ну onProgressUpdate он скорее для того чтоб показывать какой-то простите за тавтологию прогресс)) Например, сколько скачалось в процентах. Чтобы просто включить крутилку лучше onPreExecute оно для этого подходит.
@user-ph2sk4sp7e
@user-ph2sk4sp7e 5 лет назад
@@MobileDeveloper ну это да, не грациозное решение вызывать onProgressUpdate, когда можно реализовать без него и без дополнительных проверок внутри тела doInBackground. Я это скорее это к тому, что и такое люди понапридумывали))
@MobileDeveloper
@MobileDeveloper 5 лет назад
Ну да люди чего только не делают )))
@user-oc7py1vy6s
@user-oc7py1vy6s 5 лет назад
Участвую в конкурсе.
@MobileDeveloper
@MobileDeveloper 5 лет назад
Жду) кидайте код в комментарии под видео )
@sandroisu1274
@sandroisu1274 3 года назад
По моему ошибка в объяснении метода cancel(boolean). На самом деле не важно что передать в качестве параметра (true или false) - isCancelled() будет возвращать true.
@MobileDeveloper
@MobileDeveloper 3 года назад
cancel(boolean mayInterruptIfRunning) Attempts to cancel execution of this task. isCancelled() Returns true if this task was cancelled before it completed normally. Взял из документации, проверял последний раз слишком давно. Но в документации написано вот так. Возможно это у вас происходит из-за неверных замеров
@sandroisu1274
@sandroisu1274 3 года назад
@@MobileDeveloper Да, все верно. mayInteraptRunning это флаг который говорит о том каким образом завершить async task - жестко если true. И лучше всегда передавать туда false. Часто в async task приписывают не одну, а несколько (даже цикл) тяжёлых операций. И в случае например цикла перед каждой итерацией можно поставить if (isCancelled) { break;} чтобы async мог спокойно завершиться. Ну а вообще async task уже depreciated, так что надеюсь его никто и использовать уже не будет
@MobileDeveloper
@MobileDeveloper 3 года назад
Ааа да, вы все правильно говорите, был неправ. Ну я его больше для истории показывал да ) спасибо за замечание)
@podo_x2
@podo_x2 5 лет назад
Использование колбеков - альтернатива слабых ссылок?
@MobileDeveloper
@MobileDeveloper 5 лет назад
А можно поподробнее какую ситуацию вы имеете ввиду?
@podo_x2
@podo_x2 5 лет назад
​@@MobileDeveloper использовать колбек интерфейс в таске для отображения результата в активити: github.com/dropbox/dropbox-sdk-java/blob/master/examples/android/src/main/java/com/dropbox/core/examples/android/ListFolderTask.java А в активити при вызове таска прописать реализацию колбеков с помощью анонимного обьекта в конструкторе
@MobileDeveloper
@MobileDeveloper 5 лет назад
Вот здесь я точно не уверен, но вроде ссылка на анонимный класс тоже приведёт к утечке, но это не точно. В целом с архитектурной точки зрения это правильнее потому что нет зависимости от конкретной Активити. Единственное что перед тем как дергать callback его бы неплохо проверить на null
@preenxus3425
@preenxus3425 5 лет назад
Аааа, так вот для чего этот execute().
@MobileDeveloper
@MobileDeveloper 5 лет назад
Да ) Не вызывайте его два раза у одного экземпляра)
@preenxus3425
@preenxus3425 5 лет назад
@@MobileDeveloper это как с асинктаском? Упадет?
@MobileDeveloper
@MobileDeveloper 5 лет назад
А я видимо не понял про какой execute идёт речь ) если вы про ретрофитовский то ничего не будет ) просто ещё раз дёрнете апи )
@preenxus3425
@preenxus3425 5 лет назад
@@MobileDeveloper да, я про ретрофитовский)) Надо было сразу пояснить.
@imbc7867ghuui9
@imbc7867ghuui9 2 года назад
Честно, выглядит ужасно и больно....
Далее
ГИГАЧАД МЭЙКЕР В PLANTS VS ZOMBIES 2!
00:49
ГИГАЧАД МЭЙКЕР В PLANTS VS ZOMBIES 2!
00:49