2015-08-27 37 views
9

Dlaczego Android Intent implementuje Cloneable? Czy kiedykolwiek intonowano intencje?Dlaczego Intent implementuje klonowanie?

Intent clone() implementation jest uszkodzony, ponieważ wywołuje konstruktora zamiast wywoływać super.clone(). Podklasy Intencji mają zerwane zachowanie, jeśli kiedykolwiek zostaną sklonowane (odpowiadające Android bug).

+0

Nie, jeśli podklasy zastępują 'klon()' i wykonaj to samo: wywołaj ich własny konstruktor kopii. --- Powiedziałbym, że 'clone()' jest * wadliwy *, nie zmieniając typu powrotu na 'Intent', zmuszając dzwoniącego do rzucenia, z pominięciem bezpieczeństwa typu Java. – Andreas

Odpowiedz

0

Dlaczego interesuje Cię clone(), czy używasz tego (nie dla intencji, ale w ogóle)? Jest to trochę złamane w java (http://www.artima.com/intv/bloch13.html), zawsze używam konstruktora kopiowania.

Ponadto, o ile pamiętam, naprawdę nie można przedłużyć okresu Intent. Jeśli to zrobisz i spróbujesz uruchomić obiekt Activity lub Service tym obiektem, otrzymasz numer android.os.BadParcelableException: ClassNotFoundException when unmarshalling.

Więc nie sądzę, że powinieneś się martwić o clone(), zwłaszcza dla Intent s.