Wpis z mikrobloga

#programowanie #realm #androiddev
Dzis zaczalem przygode z realm. Wszyscy mowią ze takich och ach.. a mnie wkurza od dobrych dwoch godzin. W ciagu kilku chwil napotkałem kilka problemów.

Aplikacja nad ktora pracuje wykorzystuje RxJava2 (Realm wspiera RxJava1)... uzywamy Rx do miedzy innymi przerzucania czesci zadan by wykonywały sie w innym wątku.

Problem mam gdy chce skorzystac z Realm w wątku. Rzuca mi błędem ze nie moge tego zrobić, bo instancja do Realm zostala stworzona w innym watku.
Jak mam wyciagniety obiekt z bazy danych, i wypluty np z Rx (stworzony w innym watku), to nie moge np zmienic jakiegos pola w tym obiekcie, bo rzuca mi wyjatek ze musze to zrobic "w transkacji" a tej nie moge otworzyć, bo obiekt był stworzony w innym wątku.

Czy serio za kazdym razem jak chce cos zrobic na tabeli to musze tworzyc nowy obiekt Realm'a, dopiero wtedy wyciagnac obiekt z bazy i wykonać na nim jakąs akcję?! jak bede chcial przerzucic taki obiekt do wątku UI, to bede musial go przepisac na inny obiekt?

a moze ja robie cos zle?
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Mithrindil: No wlanie mam wstrzykiwanie... lecz w zadnej zaleznosci nie moge po prostu sobie zapisac obiektu Realm albo pozyskanego z bazy obiektu, bo jak przerzuce to do innego watku, to leci mi exception

Przykładowao mam Observabla z obiektem z bazy, robie na tym observable operacje długotrawala - jakies mapowanie, request do serwera, obojętne - robie to na osobnym watku, a wynik obserwuje w UI... obiektem zwracanym bylby jakis element z
  • Odpowiedz
@PanBaklazan: Dawno nie używałem Realm ale też trochę się irytowałem przy nim.
Robiłem to mniej więcej w ten sposób, również używałem Rx i nie miałem problemów. Pamiętaj o '[at]PrimaryKey'.

public List getFoos() {
RealmResults realmResult = mRealm.where(Foo.class).findAll();
List result
  • Odpowiedz
@czlowiek-z-neptuna: czyli mówisz że rozwiązaniem jest kopiowanie obiektu. No teraz mi to trochę sensowniej wygląda. Lecz nadal mam obawy co do tej multi watkowosci. Do każdego zaciągnięcia czegoś z bazy będę musiał napisać sobie jakiś manager. Trochę zachodu. Chyba na ten projekt wrócę jeszcze do greendao.
Jakiej bazy obecnie używasz?
  • Odpowiedz