Perché è stato creato ContentProvider di Android?

10

Il titolo riassume la mia domanda, ma per capire in sostanza cosa voglio capire è perché i progettisti Android vogliono app che hanno bisogno di lavorare con dati condivisi per utilizzare un Content Provider invece di accedere direttamente al database SQLite?

L'unica ragione per cui posso pensare è la sicurezza perché certi file possono essere acceduti solo con determinati processi e in questo modo il Content Provider è il gatekeeper che garantisce ad ogni app i privilegi appropriati prima di consentire l'accesso in lettura e / o scrittura al file di database. È questo il motivo principale per cui ContentProvider è stato creato?

    
posta satur9nine 04.06.2011 - 00:09
fonte

3 risposte

6

È soprattutto un modo di isolare i dati dei consumatori e dei fornitori di dati. Sviluppa il tuo fornitore di contenuti o ne estrai uno esistente se desideri rendere pubblici alcuni dati o almeno disponibili ad altre applicazioni.

È vero che questo server può controllare gli accessi dal punto di vista della sicurezza, ma consente anche di rielaborare l'implementazione fisica dei dati ogni volta che lo si desidera. In tal caso, tutto ciò che devi fare è adattare il back-end del tuo fornitore di contenuti. Le applicazioni di consumer data non dovranno essere riscritte. Continueranno ad accedere ai tuoi dati attraverso il loro risolutore di contenuti inconsapevoli di qualsiasi cambiamento nell'attuale implementazione sottostante.

Inoltre, Android creerà un'istanza di una sola istanza del tuo fornitore di contenuti anche se i dati sono accessibili da diversi client, quindi si prenderà cura degli accessi concorrenti senza che tu debba preoccupartene.

Infine, credo che gestirà anche il lavoro ingrato di avvio e spegnimento puliti.

    
risposta data 04.06.2011 - 01:26
fonte
3

Anche ContentProvider estrae tutte le comunicazioni tra processi necessarie per comunicare con altre applicazioni di terze parti. Dovendo scrivere questo codice da soli sarebbe un enorme dolore.

    
risposta data 15.10.2012 - 08:55
fonte
1

ContentProvider è anche un'astrazione che nasconde i dettagli di come i dati vengono memorizzati / generati. Ad esempio, in una delle mie app ho un fornitore di contenuti che restituisce immagini PNG. Queste immagini non vengono memorizzate da nessuna parte, vengono generate su richiesta.

    
risposta data 04.06.2011 - 02:54
fonte

Leggi altre domande sui tag