Tutorial Android: Content Provider – Principios

On 18 de março de 2014 by Bernardo Reis

Entenda o Content Provider

Introdução ao Content Provider

Neste post começaremos uma pequena série de estudos do Content Provider desde suas ideias mais básicas, começando pelos conceitos teóricos necessários para seu entendimento.

Conceitos básicos do Content provider

O Content Provider é um recurso disponibilizado pelo Android para permitir o compartilhamento de dados entre diferentes aplicações. Isso se faz necessário porque o Android não possui um local comum para guardar os dados das aplicações e compartilhá-los entre todos os pacotes Android.

 

Tal recurso se trata de uma abstração das fontes de dados de camadas inferiores (Exemplo: banco de dados SQLite), além de disponibilizar mecanismos de segurança de dados, como controle de permissão de leitura e escrita de dados, e disponibilizar uma interface padrão para compartilhar dados entre aplicações.

 

Cada Content Provider possui um caminho único. O modelo de dados utilizado pelo Content Provider é  como uma simples tabela de banco de dados, onde cada linha é um registro e cada coluna são os dados de um tipo particular. Accessing-the-Content-Provider A interface que geralmente é usada é o ContentResolver. Sua função é receber requisições de seus clientes e “resolvê-las”, ou seja, envia a requisição para um Content Provider distinto. O ContentResolver possui métodos CRUD (create, read, update, delete) correspondentes aos métodos abstratos do Content Provider (insert, delete, query, update). Cada método recebe um URI especificando o endereço do Content Provider no qual se deve interagir. O ciclo de vida de uma requisição pode ser definido em 5 passos:

 Esquema_Provider

1 – Determinada aplicação faz uma chamada ao método getContentResolver().query(Uri, String, String, String, String), o que executa o método “query” do ContentResolver, e não do Content Provider.

[code language=””java”” collapse=””false””] Cursor cursor = getcontentResolver().query(CONTENT_URI, projection, selection, null, null); [/code]

 

2 – Quando a chamada é feita, o ContentResolver interpreta o URI (Uniform Resourse Identifier)  recebido que, no caso dos Content Providers, sempre começam com “content://” e extrai o caminho do Content Provider desejado.

 

3 – O ContentResolver direciona a requisição ao Content Provider cujo caminho foi descoberto no passo anterior. Isso é feito ao chamar o método “query” do Content Provider. (Veremos uma implementação do método “query” no próximo post).

 

4 – Quando o Content Provider executa seu método “query”, um Cursor (ou uma exceção) é retornado ao ContentResolver.

 

5- O ContentResolver simplesmente repassa o resultado recebido do ContentProvider de volta à aplicação.

Conclusão

Provavelmente alguns programadores irão ignorar este post por se tratar apenas de uma apresentação conceitual do funcionamento dos Content Providers, provavelmente por estarem ansiosos por implementá-los. Mas uma vez que realmente se começa a lidar com armazenamento de dados compartilhados em Android, entender estes conceitos se torna fundamental para ter a liberdade e a competência para se fazer um bom trabalho.

 

Com tempo e experiência, tais conceitos se tornam tão naturais que nem percebemos que estamos utilizando-os. No próximo post estaremos vendo um exemplo de implementação de um Content Provider utilizado no UGuide.  Aplicativo desenvolvido no laboratório iMobilis.

 

No próximo post, veremos um exemplo prático de como criar seu próprio ContentProvider com uma implementação utilizada no UGuide.

4 Responses to “Tutorial Android: Content Provider – Principios”

Trackbacks & Pings

Deixe um comentário

O seu endereço de e-mail não será publicado.