2011-08-19 11 views

risposta

9

Generalmente No realtà. Quando si disinstalla, l'APK stesso (/data/app/com.example.app-1.apk) ei dati (sharedprefs/db/etc) in /data/data/com.example.app vengono rimossi, ma solo Android > = 2.2 eliminerà anche qualsiasi cosa dalla sdcard, e solo una specifica directory (/sdcard/Android/data/com.example.app di solito).

Tuttavia, alcune versioni precedenti di Froyo eseguiranno anche l'applicazione delete when updating, il che rende piuttosto pericoloso l'utilizzo per l'archiviazione permanente.

+0

Ok, quindi come e dove dovrei conservare questi file per evitare un comportamento imprevedibile? Se memorizzato nella memoria interna, viene presto riempito e inizia a fornire SqliteFullException. Qual è la migliore opzione possibile per archiviare un numero così grande di file? – techno

+0

Io uso /sdcard/data/com.example.app. È coerente nel fatto che non verrà mai eliminato in caso di disinstallazione o aggiornamento. E non è al livello di root, quindi gli utenti non odieranno il disordine che lascia. Invece di hardcoding "/ sdcard", utilizzare Environment.getExternalStorageDirectory() e aggiungere/data/e il nome del pacchetto. –

+0

Quindi, se uso /sdcard/data/com.example.app, allora tutti i dbs saranno cancellati alla disinstallazione, giusto? Inoltre, gli utenti possono accedere a questi file? – techno

2

Dipende. Se metti i tuoi file su un posto arbitrario su una memoria esterna (scheda SD), questi non verranno cancellati dopo aver disinstallato la tua app. Se hai utilizzato getExternalFilesDir() (Android 2.2+) per ottenere la directory in cui archiviare i tuoi file, questi verranno eliminati quando l'app viene disinstallata. Su alcune delle prime versioni di Froyo, apparentemente c'è un bug che cancella i file anche sugli aggiornamenti delle app, quindi dovresti fare attenzione a questo.

Problemi correlati