2014-07-16 17 views
9

Secondo Android documentation:multiprocesso fornitori di contenuti sincronizzati default

Android: multiprocesso

o meno un'istanza del fornitore di contenuti può essere creato in ogni processo client - "true" se le istanze possono essere eseguite in più processi e "false" se non lo sono. Il valore predefinito è falso".

Normalmente, un fornitore di contenuti viene istanziato nel processo dell'applicazione che lo ha definito. Tuttavia, se questo flag è impostato su "true", il sistema può creare un'istanza in ogni processo in cui c'è un client che vuole interagire con esso, evitando così il sovraccarico della comunicazione tra processi.

Pertanto, se questo attributo è impostato su true poi un'istanza di provider di contenuti verrà creato in ogni processo.

Domanda 1 Questa istanza è un riferimento al fornitore di contenuti o una copia dell'intero fornitore di contenuti?

Domanda 2 In che modo il sistema gestisce le modifiche di sincronizzazione sull'implementazione predefinita/originale? È che l'origine dati (SQLite, ecc.) Si occupa delle letture/scritture multi-processo?

Domanda 3 Questa è più di un'ipotesi plausibile. In origine, esiste un'istanza del provider di contenuti nell'applicazione proprietaria del provider di contenuti. Ogni volta che le altre applicazioni interagiscono con esso, lo fanno attraverso l'IPC, che significa che questo:

other app --> IPC --> content provider --> data source 

Quando multiprocess="true" è impostato, il sistema crea una copia del fornitore di contenuti in ciascun processo. Pertanto, l'app non deve passare attraverso IPC per interagire con il fornitore di contenuti.

other app ---> content provider ---> data source 

Il fornitore di contenuti può comunque accedere direttamente alla fonte dei dati. In questo caso, i suoi metodi devono essere sicuri per thread/processo, dal momento che anche altre app lo accedono.

Se questo scenario è corretto, questa implementazione della sicurezza del thread è diversa dal requisito predefinito di thread-safety?

risposta

13

Buone domande, purtroppo ho trovato una risposta ed è: Non utilizzare questo attributo.

Non utilizzare questo, è qualche vecchio cruft dalla pre-1.0 design che non lavoro e dovrebbe essere ignorato in questi giorni. Fai finta che l'attributo non esiste. :}

...

Dianne Hackbor

Android ingegnere quadro

https://groups.google.com/forum/#!topic/android-developers/u9UMJtALSXw

Ho creato un problema, chiedendo che questo sarà documentato correttamente: https://code.google.com/p/android/issues/detail?id=217916

+1

grande! Grazie! dovrebbero chiaramente metterlo nella documentazione ufficiale: / – kicker86

Problemi correlati