Wiem, że podobne pytania były zadawane wielokrotnie. Myślę, że czytam większość z tego. Ale żadna odpowiedź nie ma zastosowania.Przekaż odwołanie do obiektu wewnątrz intencji bez implementacji Serializable lub Parcelable
Muszę przekazywać złożone obiekty przez intencje (wywołania/transmisje aktywności). Wszystko odbywa się w ramach mojego procesu. Dlatego nie widzę powodu, aby zapisywać moje obiekty w strumieniach, tylko po kilku milisekundach. Chcę przekazać referencję do obiektu poprzez moją aplikację. Czy jest jakikolwiek sposób to zrobić?
Ponieważ moja aplikacja będzie wielokrotnie transmitować to samo wydarzenie z rzędu, nie mogę polegać na elementach statycznych. Muszę uzyskać dokładnie ten sam obiekt dla tego, co nadałem.
Dlatego właśnie myślałem o statycznym "Referencyjnym", który zaakceptuje Obiekt i zwróci liczbę całkowitą, która identyfikuje ten obiekt na jego wewnętrznej liście, więc mogę przekazać tę liczbę całkowitą przez .putExtras. Ale o ile znam Javę, nie mogłem wyczyścić tego obiektu z tej listy po dodaniu go, ponieważ wielu Słuchaczy mogło być zainteresowanych tym samym obiektem i musiałbym go zatrzymać na zawsze w moim Rejestrze (zakładając, że wątek można wznowić w dowolnym momencie - nawet 2 minuty później).
Wszelkie pomysły? czy robię coś źle? Lub jakiekolwiek pomysły na to, jak mogę wyczyścić moje referneces (prawdopodobnie po kilku sekundach, może to doprowadzić do awarii, ale wydaje się, że jest to bardziej odpowiednie niż pisanie kodu, który montuje i ponownie składa moje obiekty bez powodu)
Niektórzy ludzie polecili podobne pytania, aby użyć pola statycznego w obiekcie aplikacji do przekazania pożądanego obiektu. Tego właśnie nie chcę. Statyczna WeakHashMap jest totalna legit. Jeśli wszystkie referencje zostały usunięte, nigdy nie będę potrzebować obiektu, więc WeakRerence jest dokładnie tym, czego potrzebuję. – Chris
@Chris Przepraszam, nie rozumiem, dlaczego nie można użyć zmiennej statycznej do ** przekazania odwołania do obiektu ** z jednego działania do drugiego. Nie ma niebezpieczeństwa wycieku pamięci tutaj, jeśli ActivityA robi "Globals.object = objectIWantToPass;", a następnie 'ActivityB.onCreate()' robi 'Object myObject = Globals.object; Globals.object = null; ' –
Bo to okropne rozwiązanie. Jest to ten sam powód, dla którego przekazujesz obiekty przez odniesienie, a nie przez statyczny członek klasy. Uważam działanie za funkcję, która robi coś z danymi, które przekazuję, i które wrócą w pewnym momencie, a w niektórych przypadkach zwrócą dane z powrotem do osoby dzwoniącej. Ale wydaje się, że jest to jedyny sposób ... – Chris