
Ilnar
24.09.2016
10:40:08
Половину(если не больше) ui рисую программно через anko. Вот там реально хардово, когда у тебя никакого preview нет)

Seraphim
24.09.2016
10:58:14
А на 2.2 я сижу с Preview 1

Gerc
24.09.2016
10:59:12
ну и глюки, теперь не меняется в эмуляторе лэйаут изза этого инстантаран

Google

Denis
24.09.2016
11:20:26

Владислав
24.09.2016
11:21:00
Лень было человеку картинку скопировать)

Denis
24.09.2016
11:22:05
я прикипел к monosnap – скриншотит и рисует на картинке, а потом можно схватить за уголок и дропнуть в нужное приложение (=

Владислав
24.09.2016
11:23:00
У меня ножницы из onenote
в буфер копируют

Sergey
24.09.2016
11:27:14

Denis
24.09.2016
11:29:06
угу. и на маке и на винде
хотя на маке еще одну штуку держу – snappy-app,
она тоже скриншотит, но оставляет захваченное в виде стикеров на экране, и библиотеку их ведет
удобно пиксели сверять)

Sergey
24.09.2016
11:30:26
Спасибо

Seraphim
24.09.2016
11:33:06
Joxi ещё есть

Sergey
24.09.2016
12:38:39
Я сейчас пользуюсь Jing

Gerc
24.09.2016
13:05:42
Так MVP нифига не решает проблемы поворота

Google

Sergey
24.09.2016
13:06:30
Опять наброс?
Каким боком способ композиции кода к жизненному циклу?

Gerc
24.09.2016
13:07:49
Ну тут просто говорили что решает

Sergey
24.09.2016
13:08:25
Это тоже самое что написать венгерская аннотация не решает проблемы поворота

Gerc
24.09.2016
13:09:40

Sergey
24.09.2016
13:10:25
Ок... И при чем тут презентер, можно любой объект так держать в памяти
Или отключить пересоздание активити при повороте
Хотя это уже больше на костыли похоже. Так как есть еще много вариантов при которых активити будет пересоздаватся

Gerc
24.09.2016
13:12:07

Sergey
24.09.2016
13:12:41
Так вью надо обнулить а потом прибаиндить снова новую )

Gerc
24.09.2016
13:13:15
))))))))) где ты ее обнулишь?
)))))
И не только из-за вью утечет

Sergey
24.09.2016
13:14:17
От чего утечет?

Gerc
24.09.2016
13:16:38
От чего утечет?
Из-за контекстов, активити, которые захватил этот ЛЮБОЙ ОБЪЕКТ, который заинжекчен

Seraphim
24.09.2016
13:17:25

Gerc
24.09.2016
13:18:14

Seraphim
24.09.2016
13:19:58

Gerc
24.09.2016
13:21:33

Google

Sergey
24.09.2016
13:21:44

Seraphim
24.09.2016
13:21:55
Ну путай теплое с мягким

Gerc
24.09.2016
13:22:37
При том что везде пишут какое оно крутое и решает проблемы
Тотже Mosby moxy

Seraphim
24.09.2016
13:23:37
Ничего оно не решает. Самая большая проблема - момент когда что-то в презе отработало, а вьюха ещё не пересоздалась

Gerc
24.09.2016
13:23:46
Схемы у них нарисованы как вью атачится и забирает кеш

Sergey
24.09.2016
13:24:36
забей, пиши как раньше

Gerc
24.09.2016
13:24:49
Ахаха

Ivan
24.09.2016
13:24:54
Наброс: вьюмодель может обновлять данные внутри себя сколько влезет,а данные во вью обновляется автоматически после ребинда

Sergey
24.09.2016
13:25:12
о MVVM

Gerc
24.09.2016
13:25:38

Ivan
24.09.2016
13:25:45
Тк observablefield

Andre
24.09.2016
13:25:46

Seraphim
24.09.2016
13:25:50

Andre
24.09.2016
13:25:53
я просто в уме верстаю, ну может еще в тетрадке

Ivan
24.09.2016
13:26:13
Логика в xml? У вас MVP головного мозга
Указать android:text="@={vm.text}" вместо горы кода конечно печально да

Alexey
24.09.2016
13:37:08

Google

Yuri
24.09.2016
14:39:56
MVP, которое решает проблемы жизненного цикла - это Moxy ?

Gerc
24.09.2016
14:42:43
Moxy хранит презентеры в статической мапе, поэтому ненужен он

Yuri
24.09.2016
14:43:20
И что что в статичной мапе?

Gerc
24.09.2016
14:44:27
то что утечки могут, да и так жрать озу будет

Rtem
24.09.2016
14:45:13
Да грянет холивар)

Yuri
24.09.2016
14:45:33
какие утечки? когда view финиширует, презентер уничтожается. утеек нет, потому что ссылок на View в презентере нет

Gerc
24.09.2016
14:46:50

Yuri
24.09.2016
14:49:45
Там так сделано: конечно сама мапа никого не удаляет. Но когда View финиширует(т.е. например пользователь ушел по бэк стеку назад), она сообщает в делегат, что она финиширует. Тогда он идёт в это статичное хранилище и убирает из него Presenter. Получается, ссылкок на Presenter нигде не остаётся. И GC его успешно собирает. А на случай, если вы сохраняете ссылку на Presenter где-то в асинхронщине, будет вызван метод презентера onDestroy. Там и можете удалить эту ссылку. Например, сделать Subscription.unsubscribe(), но и то только если это критично


Gerc
24.09.2016
14:53:31
Там так сделано: конечно сама мапа никого не удаляет. Но когда View финиширует(т.е. например пользователь ушел по бэк стеку назад), она сообщает в делегат, что она финиширует. Тогда он идёт в это статичное хранилище и убирает из него Presenter. Получается, ссылкок на Presenter нигде не остаётся. И GC его успешно собирает. А на случай, если вы сохраняете ссылку на Presenter где-то в асинхронщине, будет вызван метод презентера onDestroy. Там и можете удалить эту ссылку. Например, сделать Subscription.unsubscribe(), но и то только если это критично
private Map<Class<? extends MvpPresenter>, Map<String, MvpPresenter>> mGlobalPresenters = new HashMap<>();
private Map<Class<? extends MvpPresenter>, Map<String, MvpPresenter>> mWeakPresenters = new WeakValueHashMap<>();
врятли они убиваются

Admin
ERROR: S client not available

Kirill
24.09.2016
14:54:39
Имхо- все эти архитектуры по большей части для того, что бы разбить код на модули и можно было тестировать удобно. Сам на работе использую MVVM, но он в Xamarin Forms из коробки реализован.

Yuri
24.09.2016
14:54:53

Gerc
24.09.2016
14:55:06

Yuri
24.09.2016
14:55:14
вот этот метод вызывается тогда, когда надо
сек :D
https://github.com/Arello-Mobile/Moxy/blob/master/moxy/src/main/java/com/arellomobile/mvp/MvpDelegate.java#L166

Gerc
24.09.2016
14:56:28
if (presenter.getPresenterType() == PresenterType.LOCAL)

Yuri
24.09.2016
14:57:02
да, а глобальные это специальные презентеры, которые живут всегда

Kirill
24.09.2016
14:58:07
А по поводу скриншотилок - на винду лучшая по мне это ShareX. Опенсорс программа с возможностью подключения различных хостингов изображений. (Ну и еще куча функций, скриншот за 1 клик делается, но можно т рисовать на нем).
Из хостинга пользуюсь puush.me - порой подтормаживает, но зато выдает прямую ссылку на изображение, а не ссылку на страницу с картинкой среди рекламы

Yuri
24.09.2016
14:58:15
а weak-презентеры живут в WeakValueHashMap и поэтому когда ни одна View на него не ссылается, он дестроится

Google

Yuri
24.09.2016
15:00:24

Gerc
24.09.2016
15:00:31
mosby лучше

Yuri
24.09.2016
15:01:45
mosby лучше
ok =) нам не понравилось то, что нужно руками делать сохранение/восстановление стейта, но на вкус и цвет фломастеры разные :D

Kirill
24.09.2016
15:01:53

Gerc
24.09.2016
15:02:29

Yuri
24.09.2016
15:02:59
так ведь да :D достаточно пометить класс презентера аннотацией @InjectViewState

Gerc
24.09.2016
15:03:31

Yuri
24.09.2016
15:03:52
например в https://github.com/Arello-Mobile/MoxySample

Gerc
24.09.2016
15:06:21
продакшен хотел

Yuri
24.09.2016
15:09:48
у нас пока 2 проекта на мокси ждут релиз

Gerc
24.09.2016
15:10:12
у мосби в 11раз больше звезд

Yuri
24.09.2016
15:11:31
нет, презентер не умеет восстанавливаться. если оень нужно, то придётся передать bundle saveState в презентер, сохранить нужны параметры и затем восстановить из того же bundle
ну да, про moxy только одна статья на аглийском, не очень большая. а про мосби Дорфмэн много написал. Кстати, очень хорошие статьи у него, чтобы понять, как пользоваться MVP вцелом =)

Gerc
24.09.2016
15:14:47

Yuri
24.09.2016
15:17:04
@InjectViewState создаёт класса ViewState, который в себе запоминает команды, которые уходили из Presenter → View. А не само состояние View. И когда View аттачится к презентеру, эта очередь команд уходит во View, благодаря чему она принимает нужное состояние.

Andre
24.09.2016
15:17:57
самое время забить себе юзернейм @InjectViewState

Yuri
24.09.2016
15:20:26
И если схоранить этот ViewState в Bundle saveState, то получается легко может быть ситуация, что будет сохранена команда "показать прогресс", а когда процесс будет восстановлен, View покажет этот прогресс. Но Presenter и думать не думал начать что-то грузить =) поэтому лучше сперва передать бандл в презентер, а потом ре-инициализировать презентер тем же бандлом. Тогда и View будет максимально простая, и логика восстановления состояния View-Presenter после уничтожения процесса будет лежать в Presenter, который как раз является самым подходящим для этого местом :D

Grigoriy
24.09.2016
15:27:10
а
не, обманул

Rustem
24.09.2016
15:31:38
Обманул