Dmitry
но возможно я не прав и поправь меня
Dmitry
разве это прям плохо? а как у нас все Activity стартуют?
Mike
разве это прям плохо? а как у нас все Activity стартуют?
Абсолютно отвратительно. Запрет на нормальный конструктор и активитей, фрагментов и вьюмоделей — это бич андроида
Dmitry
в этом смысле ничем не отличается от ViewModel
ну ты начинаешь юзать одно и стреляешь себе в другое место 0_о ну странновато 😊
Dmitry
включаешь non configuration и начинаешь руками следить за всеми изменениями конфигурации
Dmitry
когда это по идеи должен оработать android и он на себя берет эту ответственность
Anonymous
Как ограничить EditText на ввод данных только буквы Типо русская локаль букв и эти символы uûüùvwxyÿz Английская локаль и эти символы uûüùvwxyÿz
Dmitry
я ничего не включаю
ну вроде ты же выше написал что у тебя уже есть этот store? возможно я не так понял?
Mike
ну вроде ты же выше написал что у тебя уже есть этот store? возможно я не так понял?
https://developer.android.com/reference/android/app/Activity.html#onRetainNonConfigurationInstance()
Kyrylo
то есть презентер и вьюмодель тоже абсолютно эквивалентны?
к сожалению, не нашел у Фаулера толкового описание что такое презентер. Но нашел на вики: The main difference between the view model and the Presenter in the MVP pattern, is that the presenter has a reference to a view whereas the view model does not. И по гуглу ViewModel действительно не может иметь ссылку на вью.
Ruslan
@Harmonizr как думаешь, есть ли какой-то смысл сейчас не юзать setRetainInstance(true)? есть ли причины его не юзать в каких-то кейсах?
Kyrylo
да и по диаграммам взаимодействия, то, что предлагает гугл очень похоже все же на MVVM. Про Windows Presentation Foundation почитаю, спасибо за реф.
Dmitry
https://developer.android.com/reference/android/app/Activity.html#onRetainNonConfigurationInstance()
сорян я не о том подумал... и даже не слышал про это 😊 ну просто а смысл это писать руками если уже есть готовый инструмент?
Konstantin
This function is called purely as an optimization, and you must not rely on it being called.
Konstantin
лолзы
Dj
панический страх утечек памяти и неумение их предотвращать
По поводу утечек, можно юзать LeakCanary и вообще не парится о них
Mike
This function is called purely as an optimization, and you must not rely on it being called.
например, этот метод не вызовется при убийстве процесса, что немного предсказуемо
Dj
Anonymous
посмотри аттрибут digits
ну добавлю я эти значения в digits. а суть то не поменяется, в русской локали то все равно из digits будет все фильтроваться. В Английском тоже самое будет. А мне надо чтобы можно было помимо английского и еще опеределнный набор символов добавить. Так же с русским, и другими
Anonymous
@Harmonizr все сложнее чем ты думаешь
Dmitry
Готовый инструмент не предоставляет ничего полезного.
ну за исключением того что джуна проще посадить за эту херню и сказать делай вот так, вот готовая дока 😊 бери и ебошь, но это на мой взгляд
ᴀɴᴅʀᴇʏ
По поводу утечек, можно юзать LeakCanary и вообще не парится о них
Так leakcanary только показывает где утечки, а не фиксит)
zlo
Есть спиннер внутри recyclerView. Но данные (в адаптерах) для спиннеров будут по сети получены. Можно как то обновить после получения данных эти адаптеры. Что то у меня не меняется ничего (
Ruslan
По поводу утечек, можно юзать LeakCanary и вообще не парится о них
что-то я не припоминаю, чтобы она умела показывать утекшие фрагменты в рамках одного активити
Daria
Ребята Привет 👋 Кто-то знает, почему может устанавливаться 19 версия сдк, хотя в config.xml стоит android-minSdkVersion value = 22
Dj
Так leakcanary только показывает где утечки, а не фиксит)
Я имел в виду, что их нахождение делегируется ему) Фиксить утечки пока к сожалению он не умеет))
Leonid
@Harmonizr все сложнее чем ты думаешь
пишешь свой валидатор: в коде задаешь массив из допустимых символов, и в onTextChanged() фильтруешь на лету
Dmitry
разница какая, ебошить вьюмодел или ебошить non-configuration?
нееее я про то что, это быстрее чем объяснить как работает non-configuration, тем более если ты берешь курсы какие то, то там наврядли будут рассказывать про non-configuration. Итог я веду к тому что с промышленной точки зрения это дешевле фирме выйдет чем везде использовать самописную штуку
Mike
без понимания того, как всё работает, вообще нельзя пользоваться инструментом — хуже будет
Dmitry
без понимания того, как всё работает, вообще нельзя пользоваться инструментом — хуже будет
не спорю, но ты как будто меня не слышишь, я немного про другое говорю сейчас, я с точки зрения не глубокого понимания как это все устроенно, а с точки зрения именно бизнеса смотрю, ну я когда приходил в Android разработку (хотя и сейчас я не сильно то прокачался), я в тупую делал как мне говорили, особо не понимая как под капотом все устроено, со временем приходит понимание и более глубокое изучение, но начальному этапе на мой взгляд этому проще научить я тебя к этому веду
Mike
не, я-то слышу и понимаю, просто не согласен)
Ruslan
панический страх утечек памяти и неумение их предотвращать
хотя кому-то может понадобиться поведение, когда при другой ориентации должен быть сильно другой UI с другим презентером и тд)
Dmitry
без понимания того, как всё работает, вообще нельзя пользоваться инструментом — хуже будет
@Harmonizr есть популярный инструмент и тупо даешь его, тупо потому что проще и быстрее. Так вообще реализация MVVM мне самому дико не нравится
@Harmonizr все сложнее чем ты думаешь
Сложнее определить ресурсы для локалей типа?
Если тебе разные символы нужны
Для локалей
Ruslan
пусть в onCreateView пересоздаёт
ну в таком случае проще убрать setRetainInstace(true)
Anna
кто-то использовал SSE протокол? поделитесь плиз какие проблемы были и насколько быстро интегрировали
Mike
сам SSE и есть проблема 😐
Alexey
Есть следующая проблема есть библиотека A бандлит в себе библиотеку C и библиотека B которая тоже бандлит в себе библиотеку C. При билде возникают конфликты из-за этого. Подскажите куда копать шоб решить эту проблему? Отказываться от какой либо из библиотек не хотелось бы...
Anonymous
Сложнее определить ресурсы для локалей типа?
Да потому что надо вывести только текст, кроме цифр и прочих символов, в зависимости от текущей локали. русской англи. китайск и других 220 языков
Anna
сам SSE и есть проблема 😐
есть аргументы, ситуации, которые вы могли бы описать?
Mike
есть аргументы, ситуации, которые вы могли бы описать?
просто это большой костыль, который позволяет использовать протокол HTTP не по назначению https://twitter.com/JakeWharton/status/1017756667457531905
Anonymous
Вот такую клавиатуру хочу вывести
Mike
спасибо. сейчас выбираем между пушами и ссе. по мне так пуши отличное решение...
пуши норм, но их и правда стоит чем-то дублировать. Каким-нибудь MQTT, например.
Anonymous
чтобы можно было только буквы от текущей локали показывать
Anonymous
так что digits не подходит в моем случае
Anonymous
типо only english?
Anonymous
задача как раз такая как выше описал) если бы так просто было бы я бы уже сделал
Leonid
смотри. у нас был кейс - ввод данных держателя карты
Leonid
мы тупо не давали ввести не на инглише
Leonid
в onTextChanged
Leonid
не))
Anonymous
ясн
Leonid
вводиш, например, русскую "Р" -> она на лету заменяется на "R"
Leonid
по таблице транслитерации
Aleksandr
Привет. Использую moxy и cicerone. Подскажите, есть фрагмент А1, делаю открытие (fragmentForward) фрагмета Б, после делаю newRootScreen на фрагмент А2. Перед тем как стартует А2 вижу что на А1 накатывается ViewState. Куда копать?
Aleksandr
стратегии AddToEndSingleStrategy. Фрагмент А1 разве должен восстанавливается и принимать viewState&? Он потом сразу destroy
Aleksandr
в общем то методы и их последовательность известна, уже дебажил
Aleksandr
непонятно почему при newRootScreen, рутовый фрагмент перед уничтожением принимает на себя viewState
Leonid
бизнес... как ты говоришь - "начальник упоролся"
в общем то методы и их последовательность известна, уже дебажил
Я бы глянул в сорс чичероне, а конкретно как реализован backTo если передавать null
Это при newRootScreen отрабатывает если не ошибаюсь
Aleksandr
Это при newRootScreen отрабатывает если не ошибаюсь
private void backToRoot() { fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); localStackCopy.clear(); }