Size: a a a

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

2018 May 03

YS

Yuri Shmakov in Moxy – MVP библиотека под Android
источник

YS

Yuri Shmakov in Moxy – MVP библиотека под Android
а, не увидел последнего сообщения
источник

YS

Yuri Shmakov in Moxy – MVP библиотека под Android
а где каша? далаете такой фармгент, наследуетесь от него, и в вашем коде нет каши =)
источник

P▽

Picty ▽ in Moxy – MVP библиотека под Android
Yuri Shmakov
а где каша? далаете такой фармгент, наследуетесь от него, и в вашем коде нет каши =)
имею ввиду вот что:
1) у меня все фрагменты унаследованы от моего:
abstract class BaseFragment: MvpAppCompatFragment(), ....

2) По ссылке описан класс и его методы, ну например:
override fun onDestroy() {
       super.onDestroy()

       //We leave the screen and respectively all fragments will be destroyed
       if (activity.isFinishing) {
           mvpDelegate.onDestroy()
           return
       }

       // When we rotate device isRemoving() return true for fragment placed in backstack
       // http://stackoverflow.com/questions/34649126/fragment-back-stack-and-isremoving
       if (isStateSaved) {
           isStateSaved = false
           return
       }

       if (isRemoving) {
           mvpDelegate.onDestroy()
       }

       mapView.onDestroy()
   }


И этот же метод в MvpAppCompatFragment:
public void onDestroy() {
       super.onDestroy();
       if (this.getActivity().isFinishing()) {
           this.getMvpDelegate().onDestroy();
       } else if (this.mIsStateSaved) {
           this.mIsStateSaved = false;
       } else {
           boolean anyParentIsRemoving = false;

           for(Fragment parent = this.getParentFragment(); !anyParentIsRemoving && parent != null; parent = parent.getParentFragment()) {
               anyParentIsRemoving = parent.isRemoving();
           }

           if (this.isRemoving() || anyParentIsRemoving) {
               this.getMvpDelegate().onDestroy();
           }

       }
   }


Они идентичны - за исключением mapView.onDestroy()

То есть по сути - во моём фрагменте можно писать:
super.onDestroy()

mapView?.onDestroy()


И далее все перекрытые методы onStart, onPause и т.д. - по ссылке повторяют код, не считая работы с mapView. Вероятно после этого кода по ссылке и были внесены эти изменения в базовый класс.

И "каша" получается в том - что двоится логика в моем случае при наследовании от MvpAppCompatFragment

Если я всё правильно понял.
источник

P▽

Picty ▽ in Moxy – MVP библиотека под Android
Но есть и отличия:
override fun onResume() {
       super.onResume()

       if (isGoogleMapReady) {
           mvpDelegate.onAttach()
       }

       mapView?.onResume()
   }

override fun onStart() {
       super.onStart()

       if (isGoogleMapReady) {
           mvpDelegate.onAttach()
       }
   }


VS

public void onResume() {
       super.onResume();
       this.mIsStateSaved = false;
       this.getMvpDelegate().onAttach();
   }

public void onStart() {
       super.onStart();
       this.mIsStateSaved = false;
       this.getMvpDelegate().onAttach();
   }


и это думаю важный момент - потому как тут условие на mvpDelegate.onAttach()

То есть в итоге - класс по ссылке - является некой модификацией MvpAppCompatFragment - для фрагментов с MapView
источник

KD

Konstantin Dovnar in Moxy – MVP библиотека под Android
Работа с картой всегда такое себе, поэтому мне кажется не зазорным сделать для него отдельный от общей иерархии фрагмент.
источник

P▽

Picty ▽ in Moxy – MVP библиотека под Android
Согласен.
Реализовал отдельный фрагмент на основе класса по ссылке.

Унаследовал от него мой класс с картой - вычистил свой(на предмет работы с картой) - пробую...и опять тоже самое - а именно - пауза в секунду(может чуть больше) примерно при ПЕРВОМ переходе на этот фрагмент.

Все последующие попытки перехода - моментальные.

При этом анимации смены фрагментов у меня пока НЕТ!


Что это может быть?
источник

YS

Yuri Shmakov in Moxy – MVP библиотека под Android
пауза между чем? задержка в отображении фрагмента, или именно отображения карты?
источник

P▽

Picty ▽ in Moxy – MVP библиотека под Android
Yuri Shmakov
пауза между чем? задержка в отображении фрагмента, или именно отображения карты?
именно всего фрагмента - тоесть тапнул....пауза....появился фрагмент - загрузилась карта.

попытки 2 и т.д. - тапнул - сразу фрагмент и сразу видно быстрешая загрузка карты.
источник

YS

Yuri Shmakov in Moxy – MVP библиотека под Android
ну это совсем странно
источник

YS

Yuri Shmakov in Moxy – MVP библиотека под Android
я бы предложил для проверки вообще убрать с этого фрагмента всё, кроме карты, и посмотреть, как будет работать. А потом, если рпоблема останется, то и карту убрать
источник

YS

Yuri Shmakov in Moxy – MVP библиотека под Android
ну тут явно дело не в мокси =) скорей всего в карте дело
источник

P▽

Picty ▽ in Moxy – MVP библиотека под Android
попытки 2 и т.д - имею ввиду что если после первой загрузки - вернуться назад и снова зайти на этот фаргмент.
источник

P▽

Picty ▽ in Moxy – MVP библиотека под Android
Yuri Shmakov
я бы предложил для проверки вообще убрать с этого фрагмента всё, кроме карты, и посмотреть, как будет работать. А потом, если рпоблема останется, то и карту убрать
ок - попробую, да
источник

P▽

Picty ▽ in Moxy – MVP библиотека под Android
отпишусь - спасибо!
источник

P▽

Picty ▽ in Moxy – MVP библиотека под Android
@senneco
я выпилил всё - верстка: https://pastebin.com/wWCNiHVm
вот мой фрагмент + базовый на основе класса по ссылке: https://pastebin.com/bCPe4wn4

а) Изменил название переменной isStateSaved на isStateSavedStatus - чтобы не было конфликта с методом.
б) поправил
if (activity?.isFinishing!!) {
           mvpDelegate.onDestroy()
           return
       }


и всё равно пауза есть при первом попадании на фрагмент...
источник

YS

Yuri Shmakov in Moxy – MVP библиотека под Android
тогда остаётся убрать все моски-зависимости из этого фрагмента и посмотреть, как будет работать. а там уже смореть
источник

P▽

Picty ▽ in Moxy – MVP библиотека под Android
Yuri Shmakov
тогда остаётся убрать все моски-зависимости из этого фрагмента и посмотреть, как будет работать. а там уже смореть
а что именно убрать?

*сделать обычный фрагмент - без презентеров и вьюх?
источник

YS

Yuri Shmakov in Moxy – MVP библиотека под Android
ага, сделать обычный фрагмент
источник

P▽

Picty ▽ in Moxy – MVP библиотека под Android
Yuri Shmakov
ага, сделать обычный фрагмент
сделано - эффект аналогичный - в плане паузы. ~1 секунда после первого тапа
источник