Italian salvare data base e sua eliminazione

3394509365

Active Member
Licensed User
Longtime User
Sto facendo un app che ha un database di partenza(tendelzialmente vuoto), che installo insieme all' app.

L' utente poi potrà naturalmente popolarlo con tabelle ecc.

Poi al momento dell' installazione viene creata una cartella che conterrà foto.

ho die dubbi:

1- in quale parte della memoria mi conviene salvare il database e la cartella? ( se l' app viene disinstallata il db che fine farà? la cartella che fine farà? )

2- potrei chiedere in fase di disinstallazione se eliminare oppure lasciare sia il db che la cartella, per esempio in fase di aggiornamento dell' app o aggiornamento sistema operativo?

Grazie
 

LucaMs

Expert
Licensed User
Longtime User
Sto facendo un app che ha un database di partenza(tendelzialmente vuoto), che installo insieme all' app.

L' utente poi potrà naturalmente popolarlo con tabelle ecc.
Non è un modo "normale" di operare; sei sicuro che l'utente debba avere la possibilità di creare tabelle, che sia indispensabile fare in questo modo?

Poi al momento dell' installazione viene creata una cartella che conterrà foto.
Per meglio dire, al primo avvio dell'applicazione, non in fase di installazione dell'app.

1- in quale parte della memoria mi conviene salvare il database e la cartella? ( se l' app viene disinstallata il db che fine farà? la cartella che fine farà? )

2- potrei chiedere in fase di disinstallazione se eliminare oppure lasciare sia il db che la cartella, per esempio in fase di aggiornamento dell' app o aggiornamento sistema operativo?
Personalmente (e lo consiglio sempre) uso lo spazio di memoria ("di massa") dedicato all'app stessa, ovvero File.DirInternal.
Usando questa, però, anche se non ne sono certo, potresti avere problemi di dimensioni di memoria, dato che vi salverai file immagine.
Inoltre, questa memoria ha dato qualche problema, come ho letto in alcuni post, ovvero in fase di disinstallazione dell'app alcuni file non vengono eliminati, come invece ci si aspetterebbe:
https://www.b4x.com/android/forum/t...les-deleted-when-uninstall.109176/post-681987
(la risposta di Erel, "indiretta":
https://www.b4x.com/android/forum/threads/solved-db-phantom.104576/post-655319
questo dovrebbe far sì che tutti i file vengano eliminati.

Non è possibile chiedere all'utente che stia disinstallando la tua app se lui voglia conservare dati dell'app (db, cartelle, file immagine, ...) o meno. Potresti creare cartella, db e file vari nella DirRootExternal, spiegando questo all'utente ed informandolo in anticipo di questo e del fatto che se disinstallerà la tua app dovrà o potrà eliminare "a mano" tali file.

Chiaramente se salvi file nella DirRootExternal, questi saranno sempre accessibili all'utente e alle altre app installate, con i relativi rischi.
 

3394509365

Active Member
Licensed User
Longtime User
cmq non devo salvare dati sensibili, sia il db che le foto sono testi di canzoni, anche se sono visibili a tutti non credo sia un problema
 

udg

Expert
Licensed User
Longtime User
Come regola generale, ritengo che se i dati sono di interesse esclusivo di un'app allora andrebbe utilizzata DirInternal.
Se invece si tratta di dati da condividere con altre app, allora GetSafeDir/DirRootExternal.
Il bonus/malus della sopravvivenza di dati alla disinstallazione è certamente da valutare ma una volta che l'utonto ne è a conoscenza..in fondo è adulto e vaccinato!
Stesso discorso per i dati in aree accessibili da app terze. Se con un file explorer l'utonto cancella i dati della tua app, il problema è il suo non il tuo. Non è nostro compito fare i babysitter
 

3394509365

Active Member
Licensed User
Longtime User
molto chiaro, forse sono io che mi preoccupo di cose che effettivamente non mi toccano.
Allora faccio che il database lo metto in DirInternal e se eventualmente l' utonto se ne vuole fare una copia se la fa magari su di una sd (gliene devo dare a possibiliità).
Poi creo la cartella che conterrà le Foto/canzoni in una cartella in DirRootExternal. che al momento che l' app viene disinstallata rimarranno e se vorrà se le cancella lui. Potrebbe essere un' idea ?
 

udg

Expert
Licensed User
Longtime User
Dipende molto dall'applicazione e dal tipo di utente. Potresti anche avere tutto in DirInternal ed avvisare che in caso di disinstallazione si perde tutto a meno di far ricorso all'opzione esporta che, a quel punto, potrebbe sportare foto, canzoni e db sia su DirRootExternal che su SD. Ricorda che per DirRootExternal ci vogliono dei permission extra e che per SD bisogna seguire una procedura particolare per la quale ti invirto a cercare sul forum (è descritta chiaramente).
Se invece foto e canzoni già da subito è necessario condividerle con altre app (ad esempio le foto potrebbero provenire dalla fotocamera e le canzoni essere scaricate tramite browser nelal cartelal Download) allora potresti fare come dici o anche avere sia foto/canzoni che db in DirRootExternal
 
Top