Zrobiłem sobie klasę z listą, w tej klasie jest też metoda, która wywołuje zapytanie do api. Uzupełniam tę listę danymi z api, następnie wołam aktywność, z której wywołałem tę metodę, że zapytanie z api zakończone. Aktywność sobie woła geta do listy. Zanim zawołam api, robię jeszcze clear.
Za pierwszym razem przychodzi ładnie wypełnione danymi. Za każdym kolejnym razem odsyła puste. W Javie to działało bez problemu. Dlaczego tu nie działa?
@ZycieJestNobelon: Patrzyłem wiele razy i wygląda to tak jak napisałem. Najpierw aktywność woła metodę, która uzupełnia listę, a gdy skończy to przez listnera informuje aktywność, że zostało skończony, wtedy aktywność woła geta do listy.
@Alpha_Male: Myślę, że wyślę to co mam, z adnotacją, że ten element nie działa, a za kilka dni już dla samego siebie podłączę do tego kodu livemodel i/lub rxjava.
@push3k-pro: Rozumiem argument o Rx, chociaż patrząc na kod znacznie by to ułatwiło życie.
W jednej czy nie jednej, chodzi o to, że przekazujesz Aktywność do jakiejś klasy jako listener. Tamta klasa czy obiekt ma referencję do Aktywności, ale nie masz kontroli nad instancją Aktywności, przychodzi co do czego (zmiana konfiguracji, aplikacja trafia do tła itp.) i Android ją ubija. Chciałby ją wywalić z pamięci, ale jakiś obiekt trzyma do niej referencję, więc nie może i ciągle ją trzyma w pamięci, razem z widokami innymi rzeczami, a na jej miejsce pojawia się kolejna aktywność, która znów robi to samo. Tym bardziej, że tu masz object czyli Singleton, który sobie żyje i zbiera te wszystkie Aktywności i trzyma referencje do nich, zrób sobie debuga na CallListners i obróć parę razy ekranem albo daj w aktywności recreate() i zobacz co się
@push3k-pro: czemu robisz obiekt zamiast klasy? Czemu tam dajesz dialog? Dialog w activity z odpowiednim calbackiem. Nie wspomniałeś jak wywołujesz ten obiekt, jak na nim pracujesz.
Jeśli to zadanie rekrutacyjne to nie mówię, że bym Cię uwalił, ale dobrze by było mieć chociaż świadomość, że można to zrobić lepiej.
Mam tego świadomość, niemniej, ja w czasie pisania tego programu nauczyłem się czegoś nowego -> według zasady, by chodzić na rekrutacje, bo można się czegoś nauczyć.
I poczytaj o Memory Leakach, bo jestem pewien, że jeśli Cię zaproszą na dalszy etap, to o to zapytają ( ͡
@ZycieJestNobelon: Nom, wtedy w ogóle nie będę mógł czyścić. Ja w tym przypadku poradziłem sobie po prostu przepisując a = b, właśnie wykańczam wszystkie elementy i chcę jeszcze sprawdzić czy to samo czasem nie zadziała przy tamtym odświeżaniu.
@push3k-pro: no cóż, w każdym razie powodzenia :) jak zmieniałem pracę to "chwilę" mi to zajęło i za każdym razem jak miałem takie zadania to spędzałem na tym masę czasu, bo uczyłem się przy okazji nowych rzeczy. Trochę to słabe (takie wrażenie oszukiwania, że niby umiem ;) ), ale nie zawsze na codzień robi się, tak jak się robić powinno, a potem trzeba nadrabiać.
Jak działa MutableList?
Zrobiłem sobie klasę z listą, w tej klasie jest też metoda, która wywołuje zapytanie do api. Uzupełniam tę listę danymi z api, następnie wołam aktywność, z której wywołałem tę metodę, że zapytanie z api zakończone. Aktywność sobie woła geta do listy. Zanim zawołam api, robię jeszcze clear.
Za pierwszym razem przychodzi ładnie wypełnione danymi. Za każdym kolejnym razem odsyła puste. W Javie to działało bez problemu. Dlaczego tu nie działa?
@push3k-pro: wyczuwam Memory Leak (choć to pewnie nie dlatego nie działa). Zerujesz tego listenera na ubijaniu aktywności?
Tak swoją drogą, nie lepiej użyć choćby RxJavy do takich rzeczy?
Druga sprawa, tego typu działania do robota dla ViewModela, nie
Nie. To działa tylko w jednej aktywności.
setItemListGitSync
nie używaszclear
a wsetItemListBitSync
używasz?Nie działa mi getItemList. Tzn działa, ale za drugim wykonaniem zwraca mi zawsze pustą listę.
Rozumiem argument o Rx, chociaż patrząc na kod znacznie by to ułatwiło życie.
W jednej czy nie jednej, chodzi o to, że przekazujesz Aktywność do jakiejś klasy jako listener. Tamta klasa czy obiekt ma referencję do Aktywności, ale nie masz kontroli nad instancją Aktywności, przychodzi co do czego (zmiana konfiguracji, aplikacja trafia do tła itp.) i Android ją ubija. Chciałby ją wywalić z pamięci, ale jakiś obiekt trzyma do niej referencję, więc nie może i ciągle ją trzyma w pamięci, razem z widokami innymi rzeczami, a na jej miejsce pojawia się kolejna aktywność, która znów robi to samo.
Tym bardziej, że tu masz object czyli Singleton, który sobie żyje i zbiera te wszystkie Aktywności i trzyma referencje do nich, zrób sobie debuga na CallListners i obróć parę razy ekranem albo daj w aktywności recreate() i zobacz co się
Mam tego świadomość, niemniej, ja w czasie pisania tego programu nauczyłem się czegoś nowego -> według zasady, by chodzić na rekrutacje, bo można się czegoś nauczyć.
To będzie głupsza przygoda niż mi się wydawało
Usunięcie jednego cleara naprawiło problem odświeżania.
Masakra, wszystko działa co miało działać, ale ja tak czy siak mam sporo do nauki.
Najważniejsze, żeby mieć świadomość, że można