Size: a a a

Android Architecture

2017 February 01

AM

Aleksandr Mirko in Android Architecture
Вьюха это же активити, а при перевороте активити уничтожается и пересоздается. Нет?
источник

AP

Alexander Popsuenko in Android Architecture
Aleksandr Mirko
Вьюха это же активити, а при перевороте активити уничтожается и пересоздается. Нет?
Ну мы же делая MVP не тупо пишем в onDestroy - уничтожить презентер.)
источник

S

Sergey in Android Architecture
Есть интерфейс вида:

https://paste.ofcode.org/LhDkPfb2zYdqDa7QXEKSzQ

имплимечу этот интерфейс в классах(и реализую методы по своему ):
RepositoryNetworkImpl , RepositoryDBImpl , RepositoryCacheImpl
А в presenter-е создаю инстанс нужного класса(в зависимости от ситуации):
mRepositoryNetworkImpl = new RepositoryNetworkImpl();
===
я правельно понимаю Repository ?
источник

ES

Eugene Shapovalov in Android Architecture
@pahakorolev
а как Subject помогает решить эту проблему с запросом?
источник

AM

Aleksandr Mirko in Android Architecture
Alexander Popsuenko
Ну мы же делая MVP не тупо пишем в onDestroy - уничтожить презентер.)
Если через мокси то понятно, а если ваша собственная реализация где живет и  уничтожается презентер?
источник

AP

Alexander Popsuenko in Android Architecture
Sergey
Есть интерфейс вида:

https://paste.ofcode.org/LhDkPfb2zYdqDa7QXEKSzQ

имплимечу этот интерфейс в классах(и реализую методы по своему ):
RepositoryNetworkImpl , RepositoryDBImpl , RepositoryCacheImpl
А в presenter-е создаю инстанс нужного класса(в зависимости от ситуации):
mRepositoryNetworkImpl = new RepositoryNetworkImpl();
===
я правельно понимаю Repository ?
Недавно обсуждали. Нет.
Репозиторий решает откуда загружать данные и загружает их.
Можно загрузку вынести в класссы типа DataSource, которые и будут загружать данные, а репо будет решать откуда.
источник

AP

Alexander Popsuenko in Android Architecture
Aleksandr Mirko
Если через мокси то понятно, а если ваша собственная реализация где живет и  уничтожается презентер?
Я и не писал свою реализацию, я пытаюсь объяснить людям, которые не используют moxy, что нужно уничтожать презентер только после полного уничтожения вьюхи и тогда отписываться от запроса.
источник

AP

Alexander Popsuenko in Android Architecture
Pavel
> А отписываться при перевороте - заново запускать запрос.
Именно эта проблема и была решена subject'ами, что бы запросы выполнялись дальше...
Да, кстати)
Получается, что запросы выполняются всегда, даже если презентер и вьюха были уничтожены.
источник

DB

Dmitry Berdnikov in Android Architecture
Eugene Shapovalov
а что делать в случае, когда пользователь загружает видео размером 100мб и уже загрузил 80 мб, и случайно перевернул телефон, то ему придётся всё заного грузить?
Подобного вида запросы в сервис выносят ведь
источник

AD

Andrew Dementiev in Android Architecture
Dmitry Berdnikov
Подобного вида запросы в сервис выносят ведь
Можно ловить в модели и писать сразу в базу, оттуда как хочешь читай
источник

AP

Alexander Popsuenko in Android Architecture
Andrew Dementiev
Можно ловить в модели и писать сразу в базу, оттуда как хочешь читай
Имеется ввиду размер файла. Файлы лучше в сервисах грузить.
источник

AD

Andrew Dementiev in Android Architecture
А, да, по диагонали читал)
источник

DB

Dmitry Berdnikov in Android Architecture
Alexander Popsuenko
Имеется ввиду размер файла. Файлы лучше в сервисах грузить.
Я правда немного не понял, как в прензетере узнать вьюха пересоздается или окончательно убивается. жизненный цикл то одинаковый)
источник

P

Pavel in Android Architecture
Eugene Shapovalov
@pahakorolev
а как Subject помогает решить эту проблему с запросом?
Я subject не отписываю от запроса и он проксирует результат для view. Они есть с различным поведением, подробнее в доках http://reactivex.io/documentation/subject.html
Брал пример отсюда https://github.com/grandstaish/hello-mvp-dagger-2
источник

AP

Alexander Popsuenko in Android Architecture
Dmitry Berdnikov
Я правда немного не понял, как в прензетере узнать вьюха пересоздается или окончательно убивается. жизненный цикл то одинаковый)
Если юзать Moxy, то там есть метод onDestroy().
Если своё, то во вьюхе проверяем, окончательно ли она убивается и посылаем презентеру соответствующий сигнал.
Как правильно проверять, пересоздается ли вью - не знаю.)
источник

DB

Dmitry Berdnikov in Android Architecture
Alexander Popsuenko
Если юзать Moxy, то там есть метод onDestroy().
Если своё, то во вьюхе проверяем, окончательно ли она убивается и посылаем презентеру соответствующий сигнал.
Как правильно проверять, пересоздается ли вью - не знаю.)
Видимо надо будет залесть посмотреть в исходники Moxy что там кроется)
источник

AK

Amir Konovalov in Android Architecture
@Override
 protected void onDestroy() {
   super.onDestroy();

   if (isFinishing()) {
     getMvpDelegate().onDestroy();
   }
 }
источник

AK

Amir Konovalov in Android Architecture
ну приехали
источник

AP

Alexander Popsuenko in Android Architecture
Pavel
Я subject не отписываю от запроса и он проксирует результат для view. Они есть с различным поведением, подробнее в доках http://reactivex.io/documentation/subject.html
Брал пример отсюда https://github.com/grandstaish/hello-mvp-dagger-2
Напишу, как делаю я. Может кто поправит.
1. Юзаю Moxy
2. интерактор (или кто угодно) отдает Observable
3. В презентере подписываюсь на этот Observable
4. в onDestroy у презентера отписываюсь от Observable
5. Если нужно завершить запрос, не отписываемся

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

AK

Amir Konovalov in Android Architecture
/**
    * Check to see whether this activity is in the process of finishing,
    * either because you called {@link #finish} on it or someone else
    * has requested that it finished.  This is often used in
    * {@link #onPause} to determine whether the activity is simply pausing or
    * completely finishing.
    *
    * @return If the activity is finishing, returns true; else returns false.
    *
    * @see #finish
    */
источник