Piszę aplikację w android studio i chcę przekazać dane za pomocą Intent.putExtra(). Aby to zrobić, potrzebuję obiektu do zaimplementowania Parcelable. Problem polega na tym, że mój obiekt ma zmienne, takie jak Socket lub DataOutputStream. Aby zaimplementować Parcelable, muszę, aby zmienne były również parcelable.

Moje pytanie brzmi: czy Socket i DataOutputStream/DataInputStream są parcelable? A jeśli nie, jak mogę przekazać je między dwoma czynnościami w android studio?

1
Netanel 6 grudzień 2018, 23:52

1 odpowiedź

Najlepsza odpowiedź

Nie, nie możesz tego zrobić. Argumenty, które umieszczasz w Intent jako „dodatki”, muszą być możliwe do serializacji do strumienia bajtów i przechowywane trwale poza aplikacją. Android robi to na wypadek, gdyby musiał zabić proces systemu operacyjnego hostujący twoją aplikację. Gdy Android utworzy nowy proces systemu operacyjnego, przywróci twoje komponenty i przekaże Intent z tymi dodatkami.

Z tego powodu nie możesz przejść przez takie gniazda lub strumienie.

Po prostu przechowaj odwołanie do gniazda lub strumienia w zmiennej static, która może być „współdzielona” bezpośrednio przez wiele komponentów, takich jak „zmienne globalne”.

1
David Wasser 28 grudzień 2018, 18:27