Size: a a a

Android Developer

2019 January 15

И

Илья in Android Developer
Привет. Мне нужно с помощью rxjava записать в базу список элементов, изменив при этом каждый из элементов. Как это правильно сделать? Делаю так:

private Observable saveItems(List<Integer> inItems) {
   return Observable
       .fromIterable(inItems)
       .map(item -> item + 2)
       .flatMap(item -> {
         itemsDao.insert(item);
         return Observable.just(true);
       });
 }

Но не срабатывает doFinally после сабскайба.

saveItems()
.subscribeOn(Schedulers.io())
       .observeOn(AndroidSchedulers.mainThread())
.doFinally(() -> Log.i(...))
.subscribe();
источник

AP

Andrey Pomazkin in Android Developer
перенеси его в saveItems(), возможно оттуда заработает
источник

Н

Николай in Android Developer
Добрый день. Вопрос по курсу "Быстрый старт в разработке Android - приложений", четвертая неделя, задание по программированию, создание персонажа. Скачанный архив не открывает в Андроид студио. И название MACOSX. Он случайно не для Mac OS? Подскажите, как его открыть в Windows?
источник

АГ

Александр Гурьянов in Android Developer
Всем привет, ситуация такая: Использую BottomNavigationView соответственно при нажатии на элемент меню - в FrameLayoute заменяются фрагменты через replace. Но происходит все это счастье не быстро и в итоге еще фрагмент пересоздается каждый раз и теряется вся пользовательская инфа. Хочу сделать что бы работало это все быстрее и правильно, какие существуют методы для таких вещей? Спасибо.
источник

Н

Николай in Android Developer
Вопрос снят, сам разобрался. Там две версии, некорректно разархивировал
источник

n

nullpexx in Android Developer
Александр Гурьянов
Всем привет, ситуация такая: Использую BottomNavigationView соответственно при нажатии на элемент меню - в FrameLayoute заменяются фрагменты через replace. Но происходит все это счастье не быстро и в итоге еще фрагмент пересоздается каждый раз и теряется вся пользовательская инфа. Хочу сделать что бы работало это все быстрее и правильно, какие существуют методы для таких вещей? Спасибо.
Как вариант - не хранить инфу во фрагменте. Храните в презентере или вотвьюмодели
источник

GR

Georgy Ryabykh in Android Developer
Александр Гурьянов
Всем привет, ситуация такая: Использую BottomNavigationView соответственно при нажатии на элемент меню - в FrameLayoute заменяются фрагменты через replace. Но происходит все это счастье не быстро и в итоге еще фрагмент пересоздается каждый раз и теряется вся пользовательская инфа. Хочу сделать что бы работало это все быстрее и правильно, какие существуют методы для таких вещей? Спасибо.
а при переключение между вкладками в BNV, создаете новый фрагмент каждый раз?
источник

АГ

Александр Гурьянов in Android Developer
Georgy Ryabykh
а при переключение между вкладками в BNV, создаете новый фрагмент каждый раз?
есть BNV и FrameLayout, при нажатии на item BNV есть несколько вариантов решения, один через replace гружу фрагменты, но этот метод слишком ресурсоемкий, есть видимое ожидание при переключениями между фрагментами, при этом пропадает инфа из фрагмента т.к. он перезагружается. Есть еще вариант с загрузкой фрагментов в стек через add, после мы просто юзаем (hide/show) для нужного фрагмента, но при первом запуске когда запускаешь каждый из фрагментов есть видимое ожидание, но после оно пропадает, т.к. фрагменты в стеке инициализированы. Вопрос - есть ли еще методы для таких нужд, либо я что то в этих реализациях не так делаю?
источник

GR

Georgy Ryabykh in Android Developer
Add я бы сказал более требуемый к ресурсов. Допустим у вас 5 открытых вкладок и все 5 фрагментов будут в памяти
источник

АГ

Александр Гурьянов in Android Developer
Georgy Ryabykh
Add я бы сказал более требуемый к ресурсов. Допустим у вас 5 открытых вкладок и все 5 фрагментов будут в памяти
Да согласен, но отклик при переходе с вкладки на вкладку незаметен.
источник

GR

Georgy Ryabykh in Android Developer
Странно что у нас что-то тормозит при replace. Возможно проблема не в реплейс а в том, что содержит фрагмент. Или устройство слабое
источник

АГ

Александр Гурьянов in Android Developer
OnePlus 5T, устройство точно не слабое. Интересно как реализовано в Instagram такая штука.
источник

АГ

Александр Гурьянов in Android Developer
В фрагментах юзаю butterknife bindings, инжектю презенетер через dagger. Это так в догонку.
источник

GR

Georgy Ryabykh in Android Developer
Чтобы инфа во фрагменте сохранялась, нужно добавлять каждый из фрагментов через replace по тегу и добовлять в стек фрагменты. Когда переключаетесь на другую вкладку в BNV, ищите по тегу фрагмент нужный, если его нет в стеке, то создаём новый. Если есть, то replace найденный фрагмент.
источник

АГ

Александр Гурьянов in Android Developer
Georgy Ryabykh
Чтобы инфа во фрагменте сохранялась, нужно добавлять каждый из фрагментов через replace по тегу и добовлять в стек фрагменты. Когда переключаетесь на другую вкладку в BNV, ищите по тегу фрагмент нужный, если его нет в стеке, то создаём новый. Если есть, то replace найденный фрагмент.
Отлично, завтра попробую, спасибо!)
источник

GR

Georgy Ryabykh in Android Developer
А какой контент во фрагменте?
источник

АГ

Александр Гурьянов in Android Developer
Но при первом запуске я думаю эта проблема не уйдет пока все фрагменты не прогрузишь.
источник

АГ

Александр Гурьянов in Android Developer
Два врагмента с кастомными вьюхами, карта, и ресайклер Вью с сообщениями.
источник

GR

Georgy Ryabykh in Android Developer
Georgy Ryabykh
Чтобы инфа во фрагменте сохранялась, нужно добавлять каждый из фрагментов через replace по тегу и добовлять в стек фрагменты. Когда переключаетесь на другую вкладку в BNV, ищите по тегу фрагмент нужный, если его нет в стеке, то создаём новый. Если есть, то replace найденный фрагмент.
Конечно если вы сохраняете состояние в нужный методах жизненного цикла или юзаете mvp или другой подобный паттерн
источник

АГ

Александр Гурьянов in Android Developer
Я до этого юзал Вью пейджер там можно поставить нужное количество закешированных фрагментов
источник