2011-09-09 4 views
6

Un numero di domande separate ma correlate su dove archiviare i contenuti scaricati all'interno della mia applicazione.Android: dove archiviare contenuti scaricati, interni o esterni?

Ho un'applicazione che scarica il contenuto da un server centrale. Questo contenuto è a volte contenuto premium, o almeno contenuto in cui l'editore non vuole che sia distribuito liberamente. Comprendo che la memoria "esterna" è facilmente accessibile mentre la memoria "interna" è protetta, a meno che il telefono non sia rootato.

Se l'applicazione è installata su SDCARD (come la mia è configurata per essere), allora la memoria "interna" è anche fisicamente su SDCARD? Quindi, se il mio SDCARD ha installato l'applicazione scarica, ad esempio, 100 MB di contenuto nell'archiviazione interna, in realtà finisce sulla SDCARD o finisce nella memoria di bordo fisica del dispositivo?

Se l'applicazione è installata su SDCARD e la memoria "interna" con il contenuto scaricato si trova su SDCARD, viene archiviata fisicamente in un formato aperto o crittografata? Mi sembra di ricordare di aver letto che un'applicazione archiviata su un SDCARD è crittografata. Questo vale anche per l'archiviazione "interna"?

(domanda eliminata sulla memorizzazione dei file in una singola directory come Context.getDir() implica che un sistema di directory può essere creato e mantenuto nella memoria interna)

C'è un approccio migliore?

risposta

4

ha fatto un po 'di sperimentazione e giunto alle seguenti conclusioni con Android 2.2 su un Motorola Droid 2:

  • Quando si installa un'applicazione/spostato al SDCARD allora è memorizzato in un file in .asec la directory nascosta /.android_secure su SDCARD. Questo è un file crittografato e compresso.
  • Quando l'applicazione crea file di dati nella "memoria interna", questi vengono memorizzati nella memoria interna del dispositivo, non in SDCARD.
  • La finestra di dialogo Impostazioni/Gestisci dettagli applicazioni per l'applicazione ha un valore per "Dati": questa è la quantità di dati che l'applicazione utilizza nella sua memoria interna, ovvero nella memoria interna non su SDCARD
  • la memoria esterna finisce sullo SDACRD sotto la directory/Android/data
  • Cancellare i dati dalla finestra di dialogo Impostazioni/Gestisci dettagli delle applicazioni cancella tutto, il che significa che l'applicazione installata deve avere abbastanza conoscenza/logica per gestire il situazione "senza dati".

La mia app è un'app per il download di contenuti. Che tutto questo significa per me è che:

  • C'è poco valore reale nella conservazione mia piccola applicazione sul SDCARD dato che la maggior parte dello storage si consumerà al telefono sarà nella memoria interna del dispositivo. Tranne naturalmente che è sempre bene consentire all'applicazione di installare su SDCARD.
  • Il pacchetto di installazione deve essere in grado di ripristinare il contenuto scaricato dell'utente se è stato cancellato dall'utente.
  • Il concetto di memorizzazione di un unique installation id nella memoria interna funziona bene fino a quando un utente elimina i dati dell'applicazione e quindi provoca il calcolo di un nuovo ID di installazione.Pertanto, per essere in grado di ricordare quale contenuto è stato scaricato su un dispositivo richiede un account utente su un server centrale che l'utente crea/accede ogni volta che l'applicazione inizia da zero.