Intent
objetos se adjuntan constantemente al Activity
, Service
y otros componentes mientras estos componentes se estén ejecutando. No simplemente desaparecen porque te mudaste a otra aplicación. La razón de esto es porque Android puede matar el proceso en cualquier momento, pero el usuario puede querer regresar y continuar lo que estaba haciendo. Esto hace que Intents sea ideal para almacenar o transmitir bits de información pequeños (ya veces grandes), a través de los Extras.
El método onNewIntent()
es específicamente para manejar componentes de aplicación que son más persistentes y por lo tanto se puede llamar más de una vez durante su LifeCycle pero necesita realizar un seguimiento de los motivos por los que se invocó. . Si llama al setIntent()
o no depende de lo que necesite hacer.
Si no le importa por qué se llamó posteriormente, puede conservar el Intent
original al no llamar al setIntent()
. Esto es particularmente útil cuando su Activity
(o algún otro componente) hace lo mismo sin importar quién lo llamó y qué datos proporciona.
Si tiene que responder individualmente a cada evento, al menos debe almacenar la información nueva de Intent
. Esto significa que puede evitar setIntent()
, sin embargo, ninguno de los componentes a los que enlaza tendrá información de Intent
a menos que se lo envíe directamente. Este puede ser el comportamiento deseado para una aplicación que no puede asegurar que el original Intent
se manejó completamente.
Si tiene que responder a cada uno de forma individual Intención y el original Intent
no importa, a continuación, utiliza setIntent()
. Esto descarta el original Intent
, que todavía está allí ... y coloca el nuevo Intent
de modo que si el usuario se aleja (una vez más), volverán al mismo lugar.
La razón por la cual super.onNewIntent()
no maneja esto es porque las clases de componentes principales no pueden determinar si la nueva Intent
es o no más importante que la anterior. Todo lo que le importa es que tiene un Intent
, no es lo que es. Es por esto que anulamos métodos como estos, de modo que nosotros determinamos lo que es importante y lo que no. La sensación general es que las clases base como Activity
pueden usar cualquier dato que tengamos, de la forma que quiera (a menos que anulemos y le digamos lo contrario). Sin embargo, no deberían (y a menudo no pueden) deshacerse de nuestros datos a menos que les indiquemos específicamente. Este es un argumento que realmente no desea tener con algunos programadores. jeje
Espero que esto ayude.
Realmente aprecio esta respuesta. El propósito es muy claro para mí ahora. ¡Aclamaciones! – w3bshark