Size: a a a

Android arch. components

2019 May 20

VS

Vasyl Stoliarchuk in Android arch. components
Хехе)
Я думаю обойдусь каналами если нужно будет из репы получать обновления)
Спасибо
источник

VS

Vasyl Stoliarchuk in Android arch. components
Оставлю здесь, занятная статья о том как реализовать сложную навигацию с использованием navigation component
Может кому поможет реализовать single activity подход
https://proandroiddev.com/handle-complex-navigation-flow-with-single-activity-and-android-jetpacks-navigation-component-6ad988602902
источник

VG

Vladimir Garkovich in Android arch. components
делать либку со статик ссылкой на активити и бесполезным классом скрин, который не делает абсолютно ничего (точнее только ухудшает понимание) - и кидать её в массы... норм тема
источник

КР

Кирилл Романенко in Android arch. components
Vladimir Garkovich
делать либку со статик ссылкой на активити и бесполезным классом скрин, который не делает абсолютно ничего (точнее только ухудшает понимание) - и кидать её в массы... норм тема
> Со статик ссылкой на активити
И? При дестрое отчищаю. И то инстанс активити дёргается только когда нужен нав контроллер.

> Бесполезным классом скрин
Ты вообще код читал? Будь он бесполезным - его бы не было.

> Точнее ухудшает понимание
А вот вручную когда нужно навигироваться кидать action, bundle - это да, это очень удобно и охуеть как читаемо. Да.
источник

VG

Vladimir Garkovich in Android arch. components
и что, что очищается в дестрое? смысл от этого? Попахивает очень сильно. Можно тогда все ссылки на все активити хранить в аппликейшене и занулять. Очень удобно. А так же завязка на очень полезном классе активити, когда у людей может быть своя реализация базовой/ых активити.
Чем это лучше, чем val Fragment.mainNavController get() = Navigation.findNavController(requireActivity(), R.id.main_nav_host_fragment)? Которая не требует либы и не хранит статик рефов на активити. Ну а если он вообще один на всю прилагу, то просто вызывать либовский экстешен this@Fragment.findNavController(). И у вьюх такое есть.

Да, читал. И не заметил никакого плюса. В навигейшене есть свои билдеры. Делать класс, который обёртка на билдером - не знаю какой в этом смысл.
Не понятно чем так ужасен (если он юзается в одном месте)
R.id.action_home_to_registration / R.id.action_login_to_registration, вместо какого-то класса скрин3, по которому ещё пойми что он, откуда и куда

Для аргументов есть SafeNavArgs. Если они не устраивают, никто не мешает по старинке вместо getInstance делать getBundle{blabla} у фрагментов. Или юзать экстеншены для аргументов (вроде из ктх, хз откуда они там). А не хранить в банде что-то с ключом по его типу. И писать "но два параметра одного типа нельзя"

Так что да, кроме статик ссылки на активити я ничего полезного не увидел. Может быть у кого-то другое видение есть, которое я не увидел, но хотел бы
источник

КР

Кирилл Романенко in Android arch. components
Vladimir Garkovich
и что, что очищается в дестрое? смысл от этого? Попахивает очень сильно. Можно тогда все ссылки на все активити хранить в аппликейшене и занулять. Очень удобно. А так же завязка на очень полезном классе активити, когда у людей может быть своя реализация базовой/ых активити.
Чем это лучше, чем val Fragment.mainNavController get() = Navigation.findNavController(requireActivity(), R.id.main_nav_host_fragment)? Которая не требует либы и не хранит статик рефов на активити. Ну а если он вообще один на всю прилагу, то просто вызывать либовский экстешен this@Fragment.findNavController(). И у вьюх такое есть.

Да, читал. И не заметил никакого плюса. В навигейшене есть свои билдеры. Делать класс, который обёртка на билдером - не знаю какой в этом смысл.
Не понятно чем так ужасен (если он юзается в одном месте)
R.id.action_home_to_registration / R.id.action_login_to_registration, вместо какого-то класса скрин3, по которому ещё пойми что он, откуда и куда

Для аргументов есть SafeNavArgs. Если они не устраивают, никто не мешает по старинке вместо getInstance делать getBundle{blabla} у фрагментов. Или юзать экстеншены для аргументов (вроде из ктх, хз откуда они там). А не хранить в банде что-то с ключом по его типу. И писать "но два параметра одного типа нельзя"

Так что да, кроме статик ссылки на активити я ничего полезного не увидел. Может быть у кого-то другое видение есть, которое я не увидел, но хотел бы
> когда у людей может быть своя реализация базовой/ых активити
Single activity наше всё.

> Чем это лучше, чем val Fragment.mainNavController get() = Navigation.findNavController(requireActivity(), R.id.main_nav_host_fragment
Тем что навигироваться из фрагментов - это ебаное говнокодерство. Дёргать навигатор нужно только в презентере/viewmodel-е.

> Делать класс, который обёртка на билдером - не знаю какой в этом смысл
Смысл в том чтобы один раз описать bundl-ы и action-ы и не засорять код лишними подробностями.

> Для аргументов есть SafeNavArgs
Не устраивает.

> Если они не устраивают, никто не мешает по старинке вместо getInstance делать getBundle{blabla} у фрагментов. Или юзать экстеншены для аргументов (вроде из ктх, хз откуда они там). А не хранить в банде что-то с ключом по его типу.
Переформулируй, я 4 раза перечитал и так и не понял.

> И писать "но два параметра одного типа нельзя"
Там русским языком написано, что это для автоматического создания имени, чтобы не писать
bundleOf(
   "user" to user,
   "device" to device
)


> Так что да, кроме статик ссылки на активити я ничего полезного не увидел.
В начале ты хуесосишь меня что я делаю статик ссыль, а в конце говоришь что это единственное полезное что там есть? Чего??
источник

ML

Mozes Linked [US - FL] in Android arch. components
Потише с матами, ругайтесь в личке
источник

КР

Кирилл Романенко in Android arch. components
Mozes Linked [US - FL]
Потише с матами, ругайтесь в личке
В его сторону я не сказал ни одого мата, лель.) А так я матерюсь во всех чатах, ничего в этом плохого не вижу
источник

VG

Vladimir Garkovich in Android arch. components
Кирилл Романенко
> когда у людей может быть своя реализация базовой/ых активити
Single activity наше всё.

> Чем это лучше, чем val Fragment.mainNavController get() = Navigation.findNavController(requireActivity(), R.id.main_nav_host_fragment
Тем что навигироваться из фрагментов - это ебаное говнокодерство. Дёргать навигатор нужно только в презентере/viewmodel-е.

> Делать класс, который обёртка на билдером - не знаю какой в этом смысл
Смысл в том чтобы один раз описать bundl-ы и action-ы и не засорять код лишними подробностями.

> Для аргументов есть SafeNavArgs
Не устраивает.

> Если они не устраивают, никто не мешает по старинке вместо getInstance делать getBundle{blabla} у фрагментов. Или юзать экстеншены для аргументов (вроде из ктх, хз откуда они там). А не хранить в банде что-то с ключом по его типу.
Переформулируй, я 4 раза перечитал и так и не понял.

> И писать "но два параметра одного типа нельзя"
Там русским языком написано, что это для автоматического создания имени, чтобы не писать
bundleOf(
   "user" to user,
   "device" to device
)


> Так что да, кроме статик ссылки на активити я ничего полезного не увидел.
В начале ты хуесосишь меня что я делаю статик ссыль, а в конце говоришь что это единственное полезное что там есть? Чего??
Иногда приходится сделать вторую активити для какого-нибудь веба, который должен поддерживать лаяут ченжи. А вся прилага должна нативно это поддерживать. Поэтому их две.
+ допустим будет две либы, которые требуют базовые активити. Что в этом случае посоветуешь? Отказываться от первой? Или от второй? Или от двух? Даже если и делать такой костыль, то хотя бы подумать о расширении можно было, а не делать базовую активити.

А ну да, гугл говнокодеры. Опять говна посоветовали. То ли дело класс-обёртка на билдером)) Ну да, зачем следить за лайфсайклом. Можно из репозитория или датасорса навигироваться. Там же в либе есть проверка if (stateSaved) return - так что можно когда хочешь, где хочешь и когда хочешь навигивароться. А если надо всё таки не игнорить, то обернём в чичерон. Лайвдату же для этого очень сложно заюзать.

Так если один раз навигация, где там что засорять? Где второй раз будет написано? Ещё раз - это всё можно вынести в какой-нибудь статик метод для фрагмента, который будет аналогом старым <fun *Fragment getInstanance(args)>.

Где "***сошу"? Я высказал своё мнение по советованию либ со статик ссылками на активити и преподношением их как "супер полезная и классная либа". "Полезную" статик ссылку на активити. Так лучше?
источник

ОА

Оганнес Асатрян in Android arch. components
посоны го конструктив и подведение итогов
источник

КР

Кирилл Романенко in Android arch. components
Vladimir Garkovich
Иногда приходится сделать вторую активити для какого-нибудь веба, который должен поддерживать лаяут ченжи. А вся прилага должна нативно это поддерживать. Поэтому их две.
+ допустим будет две либы, которые требуют базовые активити. Что в этом случае посоветуешь? Отказываться от первой? Или от второй? Или от двух? Даже если и делать такой костыль, то хотя бы подумать о расширении можно было, а не делать базовую активити.

А ну да, гугл говнокодеры. Опять говна посоветовали. То ли дело класс-обёртка на билдером)) Ну да, зачем следить за лайфсайклом. Можно из репозитория или датасорса навигироваться. Там же в либе есть проверка if (stateSaved) return - так что можно когда хочешь, где хочешь и когда хочешь навигивароться. А если надо всё таки не игнорить, то обернём в чичерон. Лайвдату же для этого очень сложно заюзать.

Так если один раз навигация, где там что засорять? Где второй раз будет написано? Ещё раз - это всё можно вынести в какой-нибудь статик метод для фрагмента, который будет аналогом старым <fun *Fragment getInstanance(args)>.

Где "***сошу"? Я высказал своё мнение по советованию либ со статик ссылками на активити и преподношением их как "супер полезная и классная либа". "Полезную" статик ссылку на активити. Так лучше?
> Иногда приходится сделать вторую активити для какого-нибудь веба, который должен поддерживать лаяут ченжи. А вся прилага должна нативно это поддерживать. Поэтому их две.
Никогда не приходилось возиться с вебвью. И надеюсь не придётся.

> А ну да, гугл говнокодеры. Опять говна посоветовали
У гугла много хороших решений, но есть и отвратительные. Один из них - навигация в активити/фрагменте. Ты вообще слышал про MV*? Там вью не занимается навигацией.

> То ли дело класс-обёртка на билдером))
Ну, да.

> Можно из репозитория или датасорса навигироваться.
А кто говорит об этом? Это такое же говно как и навигация из фрагмента/активити.

> Так если один раз навигация, где там что засорять?
Засорять лишними подробностями. Бандлой, неймингов аргументов, action-ом и т.д.

> Ещё раз - это всё можно вынести в какой-нибудь статик метод для фрагмента, который будет аналогом старым <fun *Fragment getInstanance(args)>.
Навигация из фрагмента...

> Так лучше?
Да.
источник

K

Kopusha in Android arch. components
Конечно стало лучше. Но может люди, которые критикуют гугловские либы, понимают чуть глубже, чем макаки, которые только зависимости в грейдл писать умеют. Благодаря недовольным эти либы и появились. Благодаря реакту и флаттеру появился Compose. Бизнес никогда лишний раз не пошевелится, ему надо давать животворящего пенделя.
источник

VG

Vladimir Garkovich in Android arch. components
Сделать либу для себя. но преподносить её как для всех и рекламировать... Вебвью это один из примеров. Уверен есть и другие кейсы. А в либах это надо учитывать. Да и либы, которые требуют юзать их бейс активити/фрагменты/аппликейшены - ещё не вымерли.

Где навигация во фрагменте и т.д.? Навигирует контроллер. Говорит куда навигировать вьюмоделька/презентер.

Заменять одно говно на другое - это такой себе выход. А так же плевать на жизненный цикл и навигироваться из презентера забивая на то, что эта самая навигация проигнорится, хоть и редко - тоже такое себе.
источник

КР

Кирилл Романенко in Android arch. components
Vladimir Garkovich
Сделать либу для себя. но преподносить её как для всех и рекламировать... Вебвью это один из примеров. Уверен есть и другие кейсы. А в либах это надо учитывать. Да и либы, которые требуют юзать их бейс активити/фрагменты/аппликейшены - ещё не вымерли.

Где навигация во фрагменте и т.д.? Навигирует контроллер. Говорит куда навигировать вьюмоделька/презентер.

Заменять одно говно на другое - это такой себе выход. А так же плевать на жизненный цикл и навигироваться из презентера забивая на то, что эта самая навигация проигнорится, хоть и редко - тоже такое себе.
> Сделать либу для себя. но преподносить её как для всех и рекламировать...
Не для всех. Только для тех кому она упростит жизнь. Если бы я прям хотел её рекламить - писал бы всякие статейки.

> Вебвью это один из примеров. Уверен есть и другие кейсы. А в либах это надо учитывать. Да и либы, которые требуют юзать их бейс активити/фрагменты/аппликейшены - ещё не вымерли.
Окей, приведи пример, как можно переписать этот момент так, чтобы не делать базовую активность, и при этом из любого места получать навКонтроллер?

> Где навигация во фрагменте и т.д.? Навигирует контроллер. Говорит куда навигировать вьюмоделька/презентер.
Ну в твоём случае всё равно презентер/вьюмодель говорит куда нужно навигироваться вьюхе (фрагменту), а тот уже передаёт запрос контроллеру.

> Заменять одно говно на другое - это такой себе выход.
Что на что?
источник

VG

Vladimir Garkovich in Android arch. components
Да банально у какого-то своего либовского обжекта инит и дестрой можно вызвать. Можно обернуть в лайвсайкл и только инит вызвать. Но я против статик ссылок на активити, так что у меня нет интереса что-то придумать красивое, вот на коленке https://pastebin.com/sSfHcRqv

сделать свой навигатор, который сам будет подписываться на вьюмодельку используя лайвсайкл овнера. Тогда во фрагменте будет только
*Navigator.connect(this.lifecycle, this.controller, this.viewmodel). Или это тоже ужасно?

заменять "навигацию" во фрагменте (хотя по сути её нет), на статик ссылки на активити. От первого ещё никто не умер. От второго многие.
источник

ST

Sasha Tainyuk in Android arch. components
Оганнес Асатрян
В пет проект специально затащу все компоненты чтобы проверить что они ок
У меня сейчас проект только джетпак и фаербайс, и я бы не сказал что мне чего-то не хватает.
источник

КР

Кирилл Романенко in Android arch. components
Vladimir Garkovich
Да банально у какого-то своего либовского обжекта инит и дестрой можно вызвать. Можно обернуть в лайвсайкл и только инит вызвать. Но я против статик ссылок на активити, так что у меня нет интереса что-то придумать красивое, вот на коленке https://pastebin.com/sSfHcRqv

сделать свой навигатор, который сам будет подписываться на вьюмодельку используя лайвсайкл овнера. Тогда во фрагменте будет только
*Navigator.connect(this.lifecycle, this.controller, this.viewmodel). Или это тоже ужасно?

заменять "навигацию" во фрагменте (хотя по сути её нет), на статик ссылки на активити. От первого ещё никто не умер. От второго многие.
> От первого ещё никто не умер. От второго многие.
Ммм... С чего? Наллбл-статик ссылка на активити будет валидна до onDestroy, а в этот момент ссылка обнулится. Где проблема? Или хотя бы опиши в чём она состоит? Что именно приводит к "смерти многих"?
источник

AB

Alexander Borodin in Android arch. components
Парни, давайте либо в личку, либо в @android_ru, оффтоп
источник
2019 May 22

КР

Кирилл Романенко in Android arch. components
https://t.me/Android_Architecture/73471 так а в чём проблема?
источник

VG

Vladimir Garkovich in Android arch. components
https://github.com/googlesamples/android-architecture-components/tree/master/NavigationAdvancedSample

вот этот пример, но тут костыли есть по мультиграфу при пересоздании
источник