@android_ru

Страница 1417 из 3205
Alexander
13.05.2017
14:26:38
Да, в принципе, что угодно для хранения на замену реалму. Нет сил больше "выбирать очень удобную бд" и постоянно подстраиваться под её условия.

Андрей
13.05.2017
14:26:43
Вот это дело впервую очередь для работы с рх все советуют, сам не пробовал: https://github.com/pushtorefresh/storio
Так у него те же проблемы с Rx, что и у реалма https://github.com/pushtorefresh/storio/issues/685

Evgeny
13.05.2017
14:27:05
Didn't find class "okio.Buffer"
насколько я помню okhttp зависим от библиотеки, как раз okio кажется. Лучше retrofit установи, он в своем составе и okhttp содержит и все что с ним связано. Иначе - см. на сайте okhttp подробнее

Alex
13.05.2017
14:27:24
окей, попробую, спасибо за подсказки

Google
Konstantine
13.05.2017
14:27:26
Так у него те же проблемы с Rx, что и у реалма https://github.com/pushtorefresh/storio/issues/685
Тут уж не знаю, слышал, что на нее впервую очередь при работе с Rx и SQLite кидаются.

Андрей
13.05.2017
14:28:42
Господа, какой ORM базу посоветуете для работы с rx? Realm начинает конкретно бесить.
Мне вот эта нравится. https://github.com/requery/requery Плюс у них же есть еще реализация более новой версии Sqlite под андроид

Evgeny
13.05.2017
14:29:24
окей, попробую, спасибо за подсказки
короче, okio требуется на старых версиях okhttp, на okhttp3 уже не нужно - compile 'com.squareup.okhttp3:okhttp:3.4.1' //раньше делалось так compile 'com.squareup.okhttp:okhttp:2.7.5' compile 'com.squareup.okio:okio:1.9.0' //обязательная сопутствующая библиотека

Alex
13.05.2017
14:30:03
я вообще скачал с сайта последнюю версию и подцепил через jar файл

Evgeny
13.05.2017
14:31:21
Alex
13.05.2017
14:31:39
возможно, я еще не все знаю просто

Андрей
13.05.2017
14:32:32
я вообще скачал с сайта последнюю версию и подцепил через jar файл
Если руками качать, то и все зависимости тоже качать руками нужно. Зачем, если сборщики умеют это разруливать сами?

Denis
13.05.2017
14:33:20
Господа, какой ORM базу посоветуете для работы с rx? Realm начинает конкретно бесить.
тоже ищу, но на замену OrmLite присматриваюсь к Realm, DBFlow в меньшей степени к Orma, Objectbox, Storio requery тоже вроде мощная, но когда смотрел, в бенчмарках была аутсайдером

Evgeny
13.05.2017
14:33:50
простой путь, это в файле build.gradle прописать строку "compile com.squareup.okhttp3:okhttp:3.4.1", в блоке dependencies. Речь о build.gradle который в модуле вашего приложения, этот модуль как правило app называется

Alex
13.05.2017
14:34:51
Спасибо, опробую сейчас

Alexander
13.05.2017
14:35:04
В реалме больше боли.

Evgeny
13.05.2017
14:35:35
Спасибо, опробую сейчас
только вероятно ваш jar придется почистить (убрать) предварительно из сборки

В реалме больше боли.
расскажите про вашу боль

Google
Igor
13.05.2017
14:40:45
к Objectbox, как по мне, стоит присмотрется. выглядит перспективно
А почему не простой SQLite? Ну, в смысле, ведь при соблюдении простых правил на нем же чуть ли не быстрее будет все делать, нет?

Igor
13.05.2017
14:41:25
О, круто, проморгал :)

Андрей
13.05.2017
14:42:02
Evgeny
13.05.2017
14:42:39
А почему не простой SQLite? Ну, в смысле, ведь при соблюдении простых правил на нем же чуть ли не быстрее будет все делать, нет?
в голом SQLite замучаешься вручную прописывать какое поле объекта в какую таблицу какой столбец ложить, и наборот - откуда брать

Igor
13.05.2017
14:43:04
потом просто SQLiteStatement используется, или String с подстановкой вместо "\\?" нужных значений

считайте, 10 таблиц - около 2к строк кода, может чуть больше

Alexander
13.05.2017
14:44:21
Реалм - биндит данные и если тебе это не нужно, ты будешь с этим постоянно воевать, иначе начинается лютый треш, и приложение себя неадекватно ведет и нужно писать лишний код. + Рх в половине сценариев падает так как реалм нельзя просто на шедулере запустить и опять приходится костылять. + Наследования нет.

Evgeny
13.05.2017
14:45:10
Да нет, около 100 строчек все запросы + еще 10-20 на таблицу
ну не знаю, мне как-то ближе в аннотации класса написать имя таблицы, у полей в аннотации прописать аннотации и больше ничего не делать. А если речь про массивы внутри структур данных, дык ваще без ORM трудно по идее

Alexander
13.05.2017
14:45:43
Возможно, для архитектуры с биндингом все хорошо. Но вот в мвп с рх это постоянная война.

Evgeny
13.05.2017
14:46:29
Ну, если не дружить с JOIN-ами, то да, грустно
так а зачем это все если можно без этого, я ORMLite юзаю, для довольно сложной структуры, пока нормально

Evgeny
13.05.2017
14:48:02
так а зачем это все если можно без этого, я ORMLite юзаю, для довольно сложной структуры, пока нормально
объект есть - записал, потом обратно объект же получил, и никаких извращений с таблицами и полями

Alexander
13.05.2017
14:48:02
биндит данные - это значит что на диске, в памяти и во вью всегда одинаковые данные?
Он их, кажется, на уровне кода пробегается и подменяет. Суть та, да, это можно обходить методами реалма, но в итоге опять к костыли растут.

Evgeny
13.05.2017
14:50:42
так а зачем это все если можно без этого, я ORMLite юзаю, для довольно сложной структуры, пока нормально
а так я и с JOINами знаком и прочей лабутенью; начинать конечно лучше с хардкора, но потом переходить на лаконичные простые оберточки

Denis
13.05.2017
14:51:37
кто-то видел ORM с подобным функционалом кроме реалма? чтобы данные автообновлялись из бд в ормлайт можно вручную вызвать refresh(), но во-первых, можно забыть, во-вторых очень дорогая операция выходит по времени (от 200мс уменя)

Google
Ivan
13.05.2017
14:53:15
что значит автообновлялись

Denis
13.05.2017
14:54:41
что значит автообновлялись
в realm есть понятие managed object, он слушает изменения в бд, и если в бд объект изменился, он тут же изменится в памяти

Denis
13.05.2017
14:57:00
очень часто хочешь обновлять?
скорее да чем нет точно не знаю, но хочется всегда работать со свежими данными

Evgeny
13.05.2017
14:59:02
скорее да чем нет точно не знаю, но хочется всегда работать со свежими данными
а в ORMLite это автообновление через что реализуется, как слушатели подписываются на изменения в БД?

Denis
13.05.2017
15:00:35
а в ORMLite это автообновление через что реализуется, как слушатели подписываются на изменения в БД?
я пока вручную иногда дёргаю refresh() возможно через слушатели можно сделать авто (переопределив методы в DAO классах)

Gerc
13.05.2017
15:01:58
Ормлайт старая и медленная

Evgeny
13.05.2017
15:02:35
я пока вручную иногда дёргаю refresh() возможно через слушатели можно сделать авто (переопределив методы в DAO классах)
ясно, но как сама привязка выполняется слушающего? допустим есть объект А, есть какой-то механизм который позволяет создать сущность Б которой можно сказать следи за такими-то полями, рядами и т.п. и в случае изменения изменяй А?

Ормлайт старая и медленная
старый конь борозды не портит)

Marina
13.05.2017
15:05:32
+1
Ну да, у тебя же база данных на все огроменная, 40гб, ормлайт еле ворочает

Denis
13.05.2017
15:18:17
ясно, но как сама привязка выполняется слушающего? допустим есть объект А, есть какой-то механизм который позволяет создать сущность Б которой можно сказать следи за такими-то полями, рядами и т.п. и в случае изменения изменяй А?
ну наверное примерно так (я не пробовал) создаем интерфейс UpdateListener переопределяем метод update() (запись в базу) в нужном DAO-классе, добавляем туда вызов onUpdate(); потом в классе, на который мапится таблица, добавляем implements UpdateListener и в onUpdate() пишем refresh() - чтение из базы

Denis
13.05.2017
15:21:22
в реалм это просто из коробки работает и очень быстро

Igor
13.05.2017
15:25:53
А может кто-то подсказать, что обычно пихают в экран с настройками? (PreferenceFragment)

Я что-то только до пушей додумался

Тут же наверное еще версию приложения и лицензию пихать стоит, а вот нужно ли что-то еще - ума не приложу

Google
Anton
13.05.2017
15:27:12
например очистку кеша

Igor
13.05.2017
15:27:37
Окей, добавлю. А это включать должно и данные пользователя?

Anton
13.05.2017
15:28:04
не знаю от приложения зависит. а вообще если тебе нечего совать в настройки то может их и делать не стоит?

Nikita
13.05.2017
15:34:23
Ну можно выход запихнуть

Там онлайн

Ну обычно в процессе появляются настройки

Admin
ERROR: S client not available

Nikita
13.05.2017
15:35:04
В отзывах начинаются бугуртить, придется находить компромиссы

MrSmeet
13.05.2017
15:40:03
А то модель может использоваться в разных view model, вот и думаю, может синглетоном вернее будет
Тут надо думать в сторону реактившины синглтон про то когда не надо создавать еще один экзепляр

Anton
13.05.2017
15:42:18
Приложение - форум + мессенджер (очередной ^_^)
ну вот пуши, кэш, версия, баг репорт (я сразу в хоккейэпп фидбэк активити кидаю), просьба оценить прилу и еще можно что нибудь)

Zhasulan
13.05.2017
16:07:24
Как сохранять socket при повороте экрана??

Ну или интернет

Evgeny
13.05.2017
16:12:45
такой лузерский вопрос - есть активити в котором я создаю поток new Thread(), при уничтожении активити поток тоже будет уничтожен?

Igor
13.05.2017
16:13:36
такой лузерский вопрос - есть активити в котором я создаю поток new Thread(), при уничтожении активити поток тоже будет уничтожен?
нет, new Thread(){} - анонимный класс, он будет держать ссылку на активность до тех пор, пока не закончит свою работу

то есть, этот код является потенциальной причиной утечек памяти

Anton
13.05.2017
16:14:51
унчтожение единственной активити разве не завершит процесс?

Google
Anton
13.05.2017
16:16:02
ну и вообще уничтожение как уничтожение обьектов или как finish это же разные вещи

а разве new Thread это анонимный класс? я же могу написать Thread thread = new Thread(Runnable) thread.start

Evgeny
13.05.2017
16:17:43
нет, new Thread(){} - анонимный класс, он будет держать ссылку на активность до тех пор, пока не закончит свою работу
А причем тут ананимность? Хочешь сказать если объект Б создан из объекта А то Б держит (хранит у себя) ссылку на А?

Anton
13.05.2017
16:17:43
в этом случае ссылка разве будет держаться

Igor
13.05.2017
16:18:06
А так - зависит (вроде бы) от того, демон ли или нет

Evgeny
13.05.2017
16:19:17
Подразумевалось, что Runnable будет анонимкой, пардон
А причем тут это, в реальности будут объекты в памяти а классы используются только для создания объектов

Anton
13.05.2017
16:19:31
анонимки держат ссылки

Evgeny
13.05.2017
16:19:48
Sergey
13.05.2017
16:19:56
Хм
неявная ссылка

Anton
13.05.2017
16:20:30
я не помню что там с демонами вроде если остались живые только демоны то процесс завершится а если живые треды не демоны то подождет выполнения

но возможно в андриоде по другому

Igor
13.05.2017
16:23:51
Хм
Проще говоря, создали анонимный класс, и можете ко внешнему через MyOuterClass.this обращаться

Anton
13.05.2017
16:28:12
ну так какой ответ то) выживет или нет

Igor
13.05.2017
16:34:52
http://stackoverflow.com/questions/22163922/how-can-child-threads-still-executes-even-after-if-their-parent-thread-dies-or-t

Судя по этому - продолжат бегать

Evgeny
13.05.2017
16:35:00
ну так какой ответ то) выживет или нет
до конца не ясно, пойду пожалуй это читну https://developer.android.com/guide/components/processes-and-threads.html?hl=ru

Daniil
13.05.2017
16:48:29
Ребята, подскажите, как в реалме реализовать наследование? Композиция? Или лучше взять другую базу?

Страница 1417 из 3205