Intents Implícitos e Explícitos

Os Intents podem ser divididos em duas categorias, os Intents Implícitos e os Intents Explícitos. São chamados de Intent Implícitos aqueles que não possuem o campo component configurado, ou seja, não possuem um endereço exato. Com isso, esses Intents vão ser respondidos por um componente qualquer que se encaixe nos campos que foram configurados, normalmente action, data e category, como citado anteriormente. Esse tipo de Intent é mais utilizado quando o Intent é destinado a uma aplicação genérica, ou a um componente que não faz parte da aplicação.

No caso dos Intents Implícitos, o Android deve testar o Intent contra diferentes componentes até encontrar o que mais se adéqua a responder aquela chamada. Esses testes são feitos utilizando os campos citados acima contra os valores declarados nos Intent Filters de cada componente. Mais adiante, estudaremos os Intent Filters mais detalhadamente. Uma vez encontrado um componente que seja capaz de responder, o Android passa o Intent a esse componente, ou, caso sejam encontrados mais de um componente, o Android deixa que o usuário escolha qual componente deve responder a aquele Intent. Um exemplo que podemos citar, e que os usuários de dispositivos Android certamente estarão familiarizados, é quando desejamos compartilhar/enviar uma foto e o sistema irá mostrar uma lista com aplicativos que podem fazer isso: seja o aplicativo de e-mail, seja uma mensagem multimídia, seja por alguma rede social, etc.

Outro detalhe importante é que nunca se deve utilizar um Intent implícito para inicializar um serviço, uma vez que não há exatamente controle sobre qual serviço será iniciado e o usuário também não terá conhecimento sobre qual serviço foi inicializado, uma vez que os Services são executados em background. Na verdade, em versões posteriores do Android (API 21 em diante) esse comportamento passou a gerar uma exceção, impossibilitando o seu uso.

Já no caso dos Intents Explícitos, é declarado explicitamente a qual componente aquele Intent se destina. Através do campo component, visto anteriormente, o sistema sabe exatamente a qual componente o Intent deve ser entregue. Normalmente, utilizamos esse tipo de Intent quando ele se destina a um componente que faz parte da mesma aplicação. Assim, é mais fácil dizer a qual componente ele se destina e as chances de algo sair errado durante a passagem do Intent são extremamente baixas. Um Intent, quando utilizado dessa maneira, faz com que o Android ignore qualquer outro campo na hora de entregá-lo ao componente responsável. Apenas o componente descrito é levado em conta na busca.

Agora que já sabemos como os Intents são passados, vamos ver como os componentes devem ser preparados para recebê-los.

Versão 5.3 - Todos os Direitos reservados