--------
nonConfigurationInstance, retain fragment, saved state
действительно нормальная практика или костыли ради костылей?
Mike
действительно нормальная практика или костыли ради костылей?
ну так-то Moxy — гораздо большие костыли. Ради чего — каждый решает сам.
Mike
Я использю nonConfigurationInstance для хранения временных штук вроде текущих запросов, для серьёзных вещей (пользовательская инфа) — savedState или постоянные хранилища
Evgeniy
Всем привет. Не ради срача, но вновь поинтересуюсь. Есть MVP приложение, как пережить поворот экрана не используя Moxy
Можно использовать в качестве презентера ViewModel из архитектурных компонентов
Mike
что за savedState?
onSaveInstanceState(Bundle outState)
--------
Можно использовать в качестве презентера ViewModel из архитектурных компонентов
хз насколько правильно тащить вьюмодел в мвп, постоянно в презентер прокидывать, ну такое имхо
--------
onSaveInstanceState(Bundle outState)
там вроде всего мегабайт можно передать
Mike
Можно использовать в качестве презентера ViewModel из архитектурных компонентов
собственно, того же эффекта можно добиться, положив произвольный объект в nonConfigurationInstance
Mike
там вроде всего мегабайт можно передать
А зачем больше? У меня там какие-нибудь айдишники, я и в килобайт влезу
Арсений
Почему при нажатии на элемент каждый шестой в recycler view меняет цвет?
Сергей
Всем привет. Не ради срача, но вновь поинтересуюсь. Есть MVP приложение, как пережить поворот экрана не используя Moxy
а в чем трудности с переживанием? Презентер для того и придуман что бы переживать поворот представления.
Evgeniy
хз насколько правильно тащить вьюмодел в мвп, постоянно в презентер прокидывать, ну такое имхо
Не прокидывать в презентер, а класс презентер наследовать от ViewModel
--------
Не прокидывать в презентер, а класс презентер наследовать от ViewModel
логика сейчас устроена таким образом, что презентер наследник BasePresenter
Сергей
ну и как это собственно организовать?
а что именно нам надо сохранить, какие данные пропадают при поворте экрана?
Denis
ну и как это собственно организовать?
скоупы, nonConfigurationInstance, просто хранилише
Denis
куча способов
Evgeniy
собственно, того же эффекта можно добиться, положив произвольный объект в nonConfigurationInstance
Можно. И ещё кучей способов можно. Человек видимо все возможные хочет узнать
--------
Сергей
обычно презентер отписывается от представления и тут же подписывается на свежесозданное при повороте.
Denis
от смерти процесса вряд ли спасет, но переворот переживет
Mike
от смерти процесса — savedState и всякие файлы (префы, база, кеши)
Elron
в общем всё заработало, я просто удалил приложение, перезагрузил андроид, установил приложение и теперь передаются и число и строка
Сергей
вероятность что за эту секунду его прибьют - невелика, но данные постоянного хранения надо в Модели хранить. А данные временные - или пересоздать, или побырому вытащить из любого места хранения
Mike
а как создать тогда сам презентер?
в архитектурных компонентах есть специально обученный говнокод для создания вьюмоделей рефлекшеном
--------
обычно презентер отписывается от представления и тут же подписывается на свежесозданное при повороте.
я создаю презентер через конструктор, соответственно, при пересоздании он создается новый. ЧЯДНТ?
Denis
гляну, спасибо
можешь создавать презентер не в активити/фрагменте
Mike
конструктор и пересоздание ортогональны
Арсений
Почему при нажатии на элемент каждый шестой в recycler view меняет цвет?
и при использовании adapterPosition. Он считает их одинаковыми?
--------
не сохраняешь
не сохраняю. А как? nonConfigurationInstance?
Denis
а где,например?
что именно тебя пугает?
Mike
не сохраняю. А как? nonConfigurationInstance?
кажется, об этом и был изначальный вопрос. Вариантов предложили штуки четыре
--------
что именно тебя пугает?
ничего не пугает. Где можно создать презентер помимо вью?
Denis
где угодно
Mike
где угодно
примеры?
Denis
например, на старте приложения
--------
например, на старте приложения
т.е. мне постоянно хранить кучу презентеров?
Denis
или лениво в каком-нибудь presenterManager
Mike
например, на старте приложения
в аппе? А если стартует другой экран и этот презентер никогда не понадобится?
Mike
и деинициализацию
Ruslan
Почему Moxy это костыль? Часто слышу что его хейтят, но никто не может объяснить почему)
Сергей
а как создать тогда сам презентер?
если на вьюмодель неходить неохота - то работает представление при создании создает презентер, и тут же его аттачит. а в онСтоп = детачит
Сергей
презентер на который нет ссылок система приберет. Потребуется - пересоздаст
Сергей
кто про загрузку битмапа гладом спрашивал? нарыл код. public class RequestBitmap<Bitmap> implements RequestListener { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { return false; } // @Override public boolean onResourceReady(Object resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { Bitmap bitmap= (android.graphics.Bitmap) resource; return false; } }
Сергей
а дальше полученный битмап хоть с солью ешьте
Сергей
тегните этого, с радугой на флажке)
Kirill
Всем привет, подскажите почему этот код не работает?) val calendar = Calendar.getInstance().apply { set(Calendar.YEAR, 1999) }
Vadim
Ребята! Если библиотека уже имеет зависимости аля retrofit а я в своём проекте имплментирую эту библиотеку КАК я могу не дублировать ещё зависимость retrofit'а в своём проекте ?
Evgeniy
собственно, того же эффекта можно добиться, положив произвольный объект в nonConfigurationInstance
Тут ты имешь ввиду это https://developer.android.com/reference/android/app/Activity.html#onRetainNonConfigurationInstance()?
Vadim
exlude в build config'е можно заюзать
типа я имплементирую свою бибилотеку в которой исключаю этот самый ретрофит? но при всё при этом он у меня будет в проекте?
Evgeniy
да
Но там прямо в документации говорят, что не стоит на него пологаться. This function is called purely as an optimization, and you must not rely on it being called
Mike
Но там прямо в документации говорят, что не стоит на него пологаться. This function is called purely as an optimization, and you must not rely on it being called
Всё так, это оптимизация, которая позволит сохранить в памяти какие-нибудь текущие запросы. А реально важные данные нужно держать в savedState
Mike
мм?
ммммммммм?
Vadim
ммммммммм?
там есть отсылка на вопрос в сообщении)
Mike
если зависимость в библиотеке прописана, как implementation, а не api, то дублируй. Всё
Mike
неужели так больно и неприятно написать одну строчку в build.gradle?
Vadim
неужели так больно и неприятно написать одну строчку в build.gradle?
у меня таких 4 строчки и да, не хочу дублировать зависимости в проекте, которые есть в библиотеке может быть как то в самой библиотеке можно подправить, библиотека то моя
Mike
у меня таких 4 строчки и да, не хочу дублировать зависимости в проекте, которые есть в библиотеке может быть как то в самой библиотеке можно подправить, библиотека то моя
повторюсь. не хочешь дублировать потому что неприятно строчки в build.gradle добавлять? можно подправить, подключив в библиотеке зависимости методом api вместо implementation
Anonymous
всем привет. Такая проблема. Есть таб бар с 3 табами, в некоторые табы не влезает tittle, размер текста уменьшать нельзя. И текст на след строку переносить тоже нельзя. Как эту проблему можно решить? можно ли как-то к примеру задать веса табам?
Vitalii
у меня таких 4 строчки и да, не хочу дублировать зависимости в проекте, которые есть в библиотеке может быть как то в самой библиотеке можно подправить, библиотека то моя
Если у тебя приложение разрастётся, то рано или поздно всё равно начнутся пересечения по зависимостям. Ничего ужасного в этом нет, до тех пор, пока зависимости не конфликтуют.
Vadim
повторюсь. не хочешь дублировать потому что неприятно строчки в build.gradle добавлять? можно подправить, подключив в библиотеке зависимости методом api вместо implementation
методом api не работает( api 'com.google.android.gms:play-services-safetynet:17.0.0' api 'com.squareup.retrofit2:retrofit:2.5.0' api 'com.squareup.retrofit2:converter-gson:2.5.0' api 'com.squareup.okhttp3:logging-interceptor:3.12.2'
Anonymous
да, именно целиком нужно