2013-03-11 14 views
19

SharedPreferences vengono utilizzate per salvare i dati dell'applicazione in Android.Differenza tra commit e applica in Android SharedPreferences

commit() e apply() entrambi vengono utilizzati per salvare le modifiche nelle preferenze condivise.

Come menzionato in libreria Android:

public abstarct void apply(): 

A differenza di commit(), che scrive le sue preferenze verso persistente stoccaggio in modo sincrono, applicare() commette i suoi cambiamenti alla in-memory SharedPreferences immediatamente, ma avvia un commit asincrono sul disco e non ti verrà notificato alcun errore. Se un altro editor su condivide questo oggetto con un commit regolare() mentre un apply() è ancora in sospeso, il commit() si bloccherà fino a quando tutti i commit asincroni non saranno completati e commit stesso.

public abstract boolean commit(): 

confermare le preferenze cambiano indietro da questo Editor per i SharedPreferences oggetto è la modifica. Questo esegue atomicamente le modifiche richieste , sostituendo qualsiasi cosa sia attualmente nelle Visualizzazioni condivise .

Questo significa che le modifiche apportate da commit() sono immediati rispetto a apply()? Qual è il migliore?

Se è necessario utilizzare lo stesso valore di preferenza condiviso nella prossima attività immediata, quale dovrei utilizzare? Come ho visto se il valore di Preference è aggiornato, non viene riflesso fino al riavvio dell'applicazione.

risposta

20

Commit() è istantaneo ma esegue scritture su disco. Se si utilizza il thread ui, è necessario chiamare apply() che è asincrono.

+1

ho dovuto muovermi avere il significato di thread UI .. !! cos'è esattamente? Sono novizio. –

+0

UI Thread è il thread principale che imposta il layout e imposta ad esempio il listener onClick. – staaar

+0

proprio così le operazioni che richiedono tempo come le scritture su disco renderebbero il tuo ui meno reattivo – fedepaol

13

applicare() - restituisce vuoto

applicano() è stato aggiunto in 2.3, è salva senza restituire un valore booleano che indica il successo o il fallimento.

commit() - restituisce booleano valore.

commit() restituisce true se il salvataggio funziona, falso altrimenti. apply() è stato aggiunto poiché il team di sviluppatori Android ha notato che la maggior parte di loro non ha preso nota del valore restituito, quindi applicare è più veloce.

si può fare riferimento al collegamento sotto

What's the difference between commit() and apply() in Shared Preference

Problemi correlati