@android_ru

Страница 2168 из 3205
Like
29.10.2017
14:54:16
Приветы. Как базу данных закрываете если запись в неё идёт с нескольких потоков одновременно?

Kirill
29.10.2017
14:59:44
Как в студии зовутся эти штуки, поясняющие параметр?



Постоянно забываю

Google
Kirill
29.10.2017
15:05:09
Editor > General > Appearance



Artyom
29.10.2017
15:21:32
Сам спросил, сам ответил.

:)

Михаил
29.10.2017
15:23:09
а мне приснилось или :layout_marginHorizontal должно быть в библе поддержки?

Михаил
29.10.2017
15:24:42
нету. но вроде в ченджлогах читал что добавили

Aleksandr
29.10.2017
16:41:17
Есть тут те кто в realm шарит?

Лёша
29.10.2017
16:45:35
Есть тут те кто в realm шарит?
Можно сделать по чату поиск по запросу "realm" и понять, что пользующихся им предостаточно Короче - да, есть)

Aleksandr
29.10.2017
16:51:51
Вопрос такой, есть viewpager на нем два фрагмента один для просмотра эл из сети второй для отображения сохранённых , каждый из них отображает список, в первом фрагменте грузиться одна модель данных, по нажатию на Эл модель передаётся в экран деталей и там его можно сохранить, соответственно ещё и перемаппить в другую модель, на втором фрагменте при возврате сразу же должно отобразиться изменение (появиться новый объект), а теперь вопрос, как на реалме постоянно слушать изменения желательно с рх и при этом ещё и маппить объекты обратно. То что я пытался попробовать это realmresult но мне бросает какой-то непонятный ексепшн типо нельзя менять объекты созданные в другом потоке

Лёша
29.10.2017
16:58:20
Вопрос такой, есть viewpager на нем два фрагмента один для просмотра эл из сети второй для отображения сохранённых , каждый из них отображает список, в первом фрагменте грузиться одна модель данных, по нажатию на Эл модель передаётся в экран деталей и там его можно сохранить, соответственно ещё и перемаппить в другую модель, на втором фрагменте при возврате сразу же должно отобразиться изменение (появиться новый объект), а теперь вопрос, как на реалме постоянно слушать изменения желательно с рх и при этом ещё и маппить объекты обратно. То что я пытался попробовать это realmresult но мне бросает какой-то непонятный ексепшн типо нельзя менять объекты созданные в другом потоке
Так это одно из основных правил realm'a, что объект может изменяться лишь на том потоке на котором создан/получен Если хочешь "прокинуть" объект на другой поток, то надо будет получить его копию (realmInstance.copyFromRealm()), а после изменения на другом потоке произвести realm.insertOrUpdate() Хз на сколько верный, но рабочий вариант Это на счёт выкидываемого эксепшена

При нажатии на кнопку сохранения, я так понимаю, создаётся объект того класса, которые отображаются на втором фрагменте? Тогда достаточно подписаться на втором фрагменте на изменение таблицы соответствующего класса и просто заменять список новой порцией данных

Ну или сделать более тонко, подписавшись на changeSet

Google
Aleksandr
29.10.2017
17:02:09
Так я все манипуляции с объектом делаю в одном потоке, потом делаю subscribeon, observeOn и результат прокидываю на фьюху, или это и считается модификацией?

А можно подробнее о том как подписаться на изменения таблицы? Просто название метода, дальше я сам

Лёша
29.10.2017
17:03:50
На сколько я понимаю, считается перекидыванием на другой поток Там не только модифицировать, но и прочитать вроде как их нельзя было

Обычно делал так realmInstance.where(YourClass::class.java).findAll().asFlowable() asFlowable() заделали совсем недавно

В немного более старых версиях у них была поддержка лишь rx1 версии и там использовался .asObservable()

Aleksandr
29.10.2017
17:06:32
Модели одинаковые по сути просто из-за того что мне нужен parcelable пришлось разделить и делать мап когда сохраняю

А когда получаю обратно мапить

Gregory
29.10.2017
17:07:27
(как у некоторых всё сложно, оказывается)

Лёша
29.10.2017
17:07:59
Aleksandr
29.10.2017
17:08:39
При сохранении в объекты реалма, а при отображении обратно

Aleksandr
29.10.2017
17:10:11
(как у некоторых всё сложно, оказывается)
А есть вариант попроще, а то только это в голову пришло?

Лёша
29.10.2017
17:10:11
Если получаешь в фоновом потоке и хочешь отдать на ui-поток, достаточно вызвать copyFromRealm перед передачей

А есть вариант попроще, а то только это в голову пришло?
Ответ будет из разряда - не использовать реалм)

Gregory
29.10.2017
17:10:46
А есть вариант попроще, а то только это в голову пришло?
я не знаю, я никогда не пользовался реалмом, но в sqlite просто всегда получал всё из курсора в свои объекты с полями

Павел
29.10.2017
17:11:18
ну это по большему счету единственный минус реалма, это передача объектов между потоками

Gregory
29.10.2017
17:12:19
наверное, тут делал бы как-то так же, т.е. у меня "объекты реалма" бы за пределы метода, где я их получил, не выходили бы вообще

Aleksandr
29.10.2017
17:12:22
Всё из-за parcelable

Gregory
29.10.2017
17:12:40
так а чем эти объекты такие особенные?

я как-то привык к тому, что в объектах данных обычно есть только данные и никакой логики и никаких ссылок на логику

Google
Aleksandr
29.10.2017
17:13:42
Нельзя унаследовать реалм и имплементировать parcelable на одной модельке

Лёша
29.10.2017
17:13:45
Я бы сделал так Получил бы данные из базы, смапил их в пригодное для вьюшек представление и отдал бы дальше

Aleksandr
29.10.2017
17:14:12
Так проблема как раз в мапе

Он не разрешает

Но я попробую то что вы предложили

Gregory
29.10.2017
17:14:46
в смысле "не разрешает"?)

кстати, иногда имеет смысл не считать библиотеки иммутабельными

да, ты можешь просто взять и допилить любую библиотеку под свои нужды

Otan
29.10.2017
17:15:44
Коллеги, которая из проблем первоначальная?

Лёша
29.10.2017
17:15:47
Перед тем, как мапить получи копию объектов через copyFromRealm

Aleksandr
29.10.2017
17:16:08
Примеры кода тут можно приводить? Может понятнее станет?

Gregory
29.10.2017
17:16:10
Otan
29.10.2017
17:16:21


нижняя естественно
Тот который десятый? Или четвертый?

Gregory
29.10.2017
17:17:16
Тот который десятый? Или четвертый?
тот который с твоим кодом

Otan
29.10.2017
17:29:31
А какой номер ошибки юзать?

По сути это может быть просто нехваткой оперативной памяти на телефоне

Шапка ошибки такая - java.lang.NullPointerException. Его наверное и надо юзать.

Google
Лёша
29.10.2017
17:45:26
Шапка ошибки такая - java.lang.NullPointerException. Его наверное и надо юзать.
В телефоне 4гига оперативки Тебе в логах явно написали, что за ошибка Но ты сделал вывод, что причиной может быть нехватка памяти? Как?)

Илья
29.10.2017
17:50:48
Admin
ERROR: S client not available

Лёша
29.10.2017
17:54:28
Что ты имеешь в виду под номером?

Илья
29.10.2017
17:54:59
Леша, подскажи какой номер ошибки юзать.
Которая в твоем коде, тебе уже ответили же

Otan
29.10.2017
17:55:09
Что ты имеешь в виду под номером?
с чего начать поиски причины проблемы?

Раньше краш-репорты не юзал.

Проблема возникла только у двух юзеров.

Лёша
29.10.2017
17:56:36
Подумать-погадать какой объект внутри onCreate может быть возможно не создан к моменту обращения к нему

Otan
29.10.2017
17:57:59
Подумать-погадать какой объект внутри onCreate может быть возможно не создан к моменту обращения к нему
ну если это было бы так, то у всех возникла бы такая ошибка, а не только в двух сессиях из 300 за сегодня.

Илья
29.10.2017
17:58:49
А, блин, спутал вас))

Неочевидное, до которого только один юзер дошел

Otan
29.10.2017
18:00:20
там нету ветвления. Там линейно все идет у всех.

Лёша
29.10.2017
18:01:19
Otan
29.10.2017
18:01:51
Оба краша на седьмом андроиде?
не а. Второй на шестом.

Google
Лёша
29.10.2017
18:02:52
А есть возможность самому запустить приложение на 6/7 андроиде? Ну или в эмуляторе хотя бы

Otan
29.10.2017
18:04:16
public class FirsttenwordActivity extends AppCompatActivity { ListView firstTenWordListView; Cursor firstTenWordCursor; SQLiteDatabase db; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_firsttenword); firstTenWordListView=(ListView) findViewById(R.id.firstTenWordListView); db=((MyApplication) this.getApplication()).getMyAppDb(); firstTenWordCursor = db.rawQuery("select _id from table where _id<=10", null); ClientCursorAdapter adapter = new ClientCursorAdapter(this, R.layout.listview, firstTenWordCursor, 0 ); firstTenWordListView.setAdapter(adapter); }

Вот код

Где может быть ошибка?

Kirill
29.10.2017
18:06:32
Где может быть ошибка?
Курсор может быть нулл. Даже студия должна подсказывать

Где может быть ошибка?
Если есть номер строки на которой вылет то вообще должно быть очевидно

Лёша
29.10.2017
18:08:53
А где наити этот номер строки?
В твоём случае её нет Но скорее всего да Курсор оказался null

Kirill
29.10.2017
18:09:15
Проблема возникла только у двух юзеров.
Откуда инфа? В репортах дрлжно быть номер строки

Otan
29.10.2017
18:09:35
Kirill
29.10.2017
18:10:06
А где наити этот номер строки?
Ну блин, я хз где он. Проверку на нулл сделай просто. Изич

Otan
29.10.2017
18:10:41
вот рапорт

Kirill
29.10.2017
18:15:17
Курсор всегда нужно проверять на нулл. Даже если уверен что он не нулл.

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