2012-05-08 11 views
11

Ho un'app che scarica grandi quantità di contenuti (varia tra gli utenti, ma potrebbe essere compresa tra 200mb e 1 GB o più).Android: memoria interna o memoria esterna quando l'applicazione è installata sulla scheda SD

Attualmente salva tutto questo contenuto su Archiviazione esterna poiché è probabile che sia l'area con il maggior spazio, ad esempio una scheda SD. Questo funziona bene per la maggior parte, ma c'è una situazione in cui questo non è necessariamente l'ideale.

Se il dispositivo ha una memoria esterna integrata, come la maggior parte dei tablet, ma ha anche uno slot per schede SD, il problema di archiviazione esterna diventa un po 'complicato. L'app può essere installata sulla scheda SD, ma il contenuto verrà salvato nella memoria integrata, non nella scheda SD esterna.

Se l'app è installata su una scheda SD, chiamerà getFilesDir() un percorso sulla scheda SD o sulla memoria interna?

E qual è il modo migliore per gestirlo? Devo salvare il contenuto nella memoria interna (su una scheda SD), lo spazio di archiviazione esterno o chiedere all'utente quando si avvia l'app l'idea migliore?

risposta

5

L'app può essere installata sulla scheda SD, ma il contenuto verrà salvato nella memoria integrata, non nella scheda SD esterna.

No. Se il dispositivo ha una memoria esterna, l'app verrà installata nella memoria esterna. Non importa se il dispositivo ha anche una scheda SD..

Se l'app è installata su una scheda SD, chiamerà getFilesDir() dare un percorso sulla scheda SD o la memoria interna?

getFilesDir() è sempre memoria interna, indipendentemente da dove è installata l'applicazione.

+0

'No. Se il dispositivo ha una memoria esterna, l'app verrà installata nella memoria esterna.Non importa se il dispositivo ha anche una scheda SD. Quindi, quello che stai dicendo è che un'app non può essere installata su una scheda SD se è presente anche una memoria esterna incorporata? –

+0

@DavidScott: No, sto dicendo che Andrdoid non ha il concetto di "installato su una scheda SD". Ha * un concetto di "installato su memoria esterna" - se "memoria esterna" è una scheda SD o meno dipende dal produttore del dispositivo. http://developer.android.com/guide/appendix/install-location.html – CommonsWare

+0

Ah OK. Penso che ciò che sta accadendo, è che le persone stanno usando Apps2SD per spostare l'app dall'archivio esterno integrato su una scheda SD. Grazie per il chiarimento. –

0

Se l'app è installata su una scheda SD, la chiamata a getFilesDir() fornisce un percorso sulla scheda SD o la memoria interna?

n. getFilesDir() metodo nella classe Context restituisce sempre percorso di archiviazione interna (in termini Android).

Nella maggior parte dei casi, il percorso di directory restituito da getFilesDir() sarebbe /data/data/your.application.package.appname/files. Ma può variare su diversi telefoni, diverse versioni di Android.

Per memorizzare i file dell'app nella scheda SD, è possibile utilizzare il metodo File[] getExternalFilesDirs (String type) nella classe Context. Generalmente, il secondo percorso restituito sarebbe il percorso di archiviazione per la scheda microSD (se presente).

sul mio cellulare, secondo percorso riscontrato è /storage/sdcard1/Android/data/your.application.package.appname/files dopo aver superato null come argomento per getExternalFilesDirs (String type)

La terminologia interna ed External Storage Secondo Google/documentazione ufficiale Android è molto diversa da ciò che pensiamo.

Problemi correlati