Size: a a a

Moxy – MVP библиотека под Android

2019 May 14

TT

Turalllb Turalll in Moxy – MVP библиотека под Android
Алексей Ершов
выход из активити через back означает, что вы сознательно закончили с ним работу, и сохранять его состояние не нужно, поэтому и bundle не сохраняется. Убийство процесса - это система экономит ресурсы по своей воле, и когда вы захотите снова открыть своё приложение, система вспомнит, на каком activity она его убила, у него будет  bundle, в который система сохранила состояние, чтобы вы его восстановили.
Ну выходит bundle самый надежный способ. Единственное, что этот способ не дает это восстановление показа прогресса , если конечно не хранить и не проверять флаги.  Но вопрос. Зачем тогда нужен мокси? Чтобы легко восстанавливать даже то состояние, которое придется регулировать флагами , но в ситуации когда система не убивает процесс?
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
Turalllb Turalll
Ну выходит bundle самый надежный способ. Единственное, что этот способ не дает это восстановление показа прогресса , если конечно не хранить и не проверять флаги.  Но вопрос. Зачем тогда нужен мокси? Чтобы легко восстанавливать даже то состояние, которое придется регулировать флагами , но в ситуации когда система не убивает процесс?
Мокси восстанавливает за вас состояние экрана, когда пересоздаётся активити, но не умирает процесс. Это намного более частый случай, чем смерть процесса, и его нужно обрабатывать обязательно, а на смерть процесса многие просто забивают, потому что это происходит редко, и если уж  произошло, то пользователь как-нибудь переживёт тот факт, что состояние сбросилось.
Разумеется, есть случаи, когда смерть процесса нужно обрабатывать. Например, пользователь заполнял длинную заявку, состояние которой нужно сохранить, иначе он очень огорчится. Тут как раз можно использовать bundle или любое другое персистентное хранилище данных. Но делать это для всего состояния каждого экрана - дело очень муторное и сложное, и, скорее всего, не стоящее таких усилий.
С тем же прогрессом - если приложение умерло, то оно больше ничего не делает, и ни о каком прогрессе там речи быть не может. Значит, и флаг этот хранить не нужно :)
источник

TT

Turalllb Turalll in Moxy – MVP библиотека под Android
Алексей Ершов
Мокси восстанавливает за вас состояние экрана, когда пересоздаётся активити, но не умирает процесс. Это намного более частый случай, чем смерть процесса, и его нужно обрабатывать обязательно, а на смерть процесса многие просто забивают, потому что это происходит редко, и если уж  произошло, то пользователь как-нибудь переживёт тот факт, что состояние сбросилось.
Разумеется, есть случаи, когда смерть процесса нужно обрабатывать. Например, пользователь заполнял длинную заявку, состояние которой нужно сохранить, иначе он очень огорчится. Тут как раз можно использовать bundle или любое другое персистентное хранилище данных. Но делать это для всего состояния каждого экрана - дело очень муторное и сложное, и, скорее всего, не стоящее таких усилий.
С тем же прогрессом - если приложение умерло, то оно больше ничего не делает, и ни о каком прогрессе там речи быть не может. Значит, и флаг этот хранить не нужно :)
Ну ясно,  ровно так все это и представляю, спасибо )
источник

AP

Andrey Prokhorenko in Moxy – MVP библиотека под Android
Turalllb Turalll
Ну выходит bundle самый надежный способ. Единственное, что этот способ не дает это восстановление показа прогресса , если конечно не хранить и не проверять флаги.  Но вопрос. Зачем тогда нужен мокси? Чтобы легко восстанавливать даже то состояние, которое придется регулировать флагами , но в ситуации когда система не убивает процесс?
Делайте это в модели через ручное сохранение в префы или базу.
У вас есть бизнес сценарий, в котором вам нужно сохранить бизнес данные так, чтобы они жили даже когда умер процесс. Это не имеет прямого отношению к экрану, ведь если эти данные могут понадобиться и на другом экране, то там не будет бандла с состоянием.

те данными в сценарии, которые должны точно жить (к примеру Алексея - данные клиента для покупки товара из супер длинной формы) мы сохраняем как json в префы или в таблицу БД, а когда надо достаём их.

После восстановления процесса - мы достаём их, и правильно накладываем состояние на экран с этими данными
источник

TT

Turalllb Turalll in Moxy – MVP библиотека под Android
Andrey Prokhorenko
Делайте это в модели через ручное сохранение в префы или базу.
У вас есть бизнес сценарий, в котором вам нужно сохранить бизнес данные так, чтобы они жили даже когда умер процесс. Это не имеет прямого отношению к экрану, ведь если эти данные могут понадобиться и на другом экране, то там не будет бандла с состоянием.

те данными в сценарии, которые должны точно жить (к примеру Алексея - данные клиента для покупки товара из супер длинной формы) мы сохраняем как json в префы или в таблицу БД, а когда надо достаём их.

После восстановления процесса - мы достаём их, и правильно накладываем состояние на экран с этими данными
Ну да, скажем просто здоровая логика)
источник

AP

Andrey Prokhorenko in Moxy – MVP библиотека под Android
Turalllb Turalll
Ну да, скажем просто здоровая логика)
Вот вот!
И к примеру: позже вы переделаете отображение не на фрагмент, а на активити. А вам париться о сохранении и не нужно. Все уже на уровне модели реализовано.
источник

MM

Maxim Motorniy in Moxy – MVP библиотека под Android
Очень кстати частый вопрос. Почему при убийстве активити не сохраняется состояние. Надо в readme наверное добавить, если там еще нету этого
источник
2019 May 15

TD

T D in Moxy – MVP библиотека под Android
Presenter в Moxy это Singletone? по этой причине он не удаляется после перезапуска Activity?
Как работает Presenter вообще, где можно почитать?
источник

AT

Anton Taklyonok in Moxy – MVP библиотека под Android
T D
Presenter в Moxy это Singletone? по этой причине он не удаляется после перезапуска Activity?
Как работает Presenter вообще, где можно почитать?
В интернете 500 статей
источник

TD

T D in Moxy – MVP библиотека под Android
Anton Taklyonok
В интернете 500 статей
Ну мог бы хотя бы 1 из них дать. Wiki глянул нет там ничего про то как работает и из чего состоит презентр
источник

MM

Maxim Motorniy in Moxy – MVP библиотека под Android
T D
Presenter в Moxy это Singletone? по этой причине он не удаляется после перезапуска Activity?
Как работает Presenter вообще, где можно почитать?
Исходники почитать вроде проще простого
источник

AB

Alexander Blinov in Moxy – MVP библиотека под Android
T D
Ну мог бы хотя бы 1 из них дать. Wiki глянул нет там ничего про то как работает и из чего состоит презентр
А ещё в Вики ссылка на 500 докладов
источник

AB

Alexander Blinov in Moxy – MVP библиотека под Android
Один из них как мокси под капотом работает
источник
2019 May 16

Y

Yank in Moxy – MVP библиотека под Android
добрый день всем. в проекте есть либа мокси и при добавлении баттеркнайф выходит такая ошибка

ERROR: Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
 is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
 Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:6:5-21:19 to override.


если убрать одну из либ то ошибка уходит. Почему так?
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
Yank
добрый день всем. в проекте есть либа мокси и при добавлении баттеркнайф выходит такая ошибка

ERROR: Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
 is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
 Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:6:5-21:19 to override.


если убрать одну из либ то ошибка уходит. Почему так?
вы пытаетесь смешать androidx и support library, не надо так. Если у вас AndroidX, можно использовать форк мокси из шапки.
источник

Y

Yank in Moxy – MVP библиотека под Android
Алексей Ершов
вы пытаетесь смешать androidx и support library, не надо так. Если у вас AndroidX, можно использовать форк мокси из шапки.
а где здесь андроид х ?
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
в баттернайфе, возможно
источник

Y

Yank in Moxy – MVP библиотека под Android
Алексей Ершов
в баттернайфе, возможно
а вы не в курсе какая последняя версия без андроид х ?
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
нет, но у него достаточно подробный changelog на гитхабе
источник

Y

Yank in Moxy – MVP библиотека под Android
Алексей Ершов
нет, но у него достаточно подробный changelog на гитхабе
нашел, спасибо. а вообще в чем преимущество андроид х ?
источник