2012-02-08 10 views
27

Voglio salvare un file JSON con tutti i dati dell'applicazione (qualcosa di simile alla preferenza) ma non sono sicuro di quale sia la dimensione limite, perché se l'app non può usare questo file non funzionerà probabilmente. questa informazione è nota in anticipo e il sistema operativo riserva uno spazio per la tua app o la sua in base alle dimensioni disponibili.c'è una dimensione massima nella memoria interna di Android allocata per un'app?

Aggiornamento: Non mi interessa davvero di archiviazione esterna dal momento che non è sempre disponibile nel dispositivo e potrebbe essere cambiato (scheda SD) e ho potuto verificare la presenza di internal storage using this ma questo non è quello che voglio sapere è, quello che voglio sapere se c'è una dimensione di memoria allocata per l'archiviazione interna per il dispositivo?

+4

Se si dispone di un file * JSON * che si è preoccupato potrebbe essere troppo grande, si sta facendo male. – CommonsWare

+2

Non sono preoccupato che il file sia troppo grande_, sono preoccupato che la memoria interna lasciata per l'app sia troppo piccola_ – Jimmy

risposta

35

Se si utilizza Environment.getExternalStorageDirectory() (o Context.getExternalFilesDir() per livello di API 8 in su) come il luogo per il file JSON, quindi credo che la dimensione sarà limitata dallo spazio disponibile nella memoria esterna (di solito una scheda SD). Per la maggior parte dei dispositivi, credo che non ci siano limiti fissi incorporati in Android per l'archiviazione di file esterni. (La memoria interna è diversa. I produttori di dispositivi possono imporre limiti piuttosto restrittivi, forse a partire da 100 MB condivisi tra tutte le applicazioni.)

AGGIORNARE: nota che secondo lo compatibility definition for Android 2.3 (Sezione 7.6.1), i dispositivi dovrebbero avere abbastanza un po 'di memoria:

Implementazioni dispositivo DEVE disporre di almeno 150 MB di memoria non volatile disponibile per i dati utente. Cioè, la partizione/dati DEVE essere almeno 150 MB.

Oltre ai requisiti sopra, le implementazioni del dispositivo DOVREBBE avere almeno 1 GB di memoria non volatile disponibile per i dati utente. Si noti che questo requisito superiore è pianificato per diventare un minimo indispensabile in una versione futura di Android. Le implementazioni dei dispositivi sono fortemente incoraggiate a soddisfare questi requisiti ora, altrimenti potrebbero non essere idonei per la compatibilità per una versione futura di Android.

Questo spazio è condiviso da tutte le applicazioni, quindi può essere riempito. Non esiste una memoria minima garantita disponibile per ogni app. (Tale minimo garantito sarebbe inutile per le applicazioni che hanno bisogno di memorizzare più del minimo e sarebbe uno spreco per le applicazioni che memorizzano meno.)

Edit: Dalle compatibility definition for Android 4.0

implementazioni dispositivo deve avere almeno 350 MB di memoria non volatile disponibile per i dati dell'utente. Cioè, la partizione/dati DEVE essere almeno 350 MB.

Dalle compatibility definition for Android 4.3

implementazioni dispositivo deve avere almeno 512 MB di memoria non volatile disponibile per i dati utente. Cioè, la partizione/dati DEVE essere almeno 512 MB.

È interessante notare che la raccomandazione che le implementazioni DOVREBBE fornire almeno 1 GB è rimasta la stessa.

+0

Domanda aggiornata. – Jimmy

+0

@Jimmy - Quanto è grande un file di cui stiamo parlando qui? –

+0

il file non è grande in realtà lascia dire paio di KB ma la cosa è se il sistema operativo non riserva nulla per la mia app in alcuni casi quindi anche i file di piccole dimensioni saranno un problema. – Jimmy

13

Non ho mai visto limitare una singola applicazione e l'ho provato salvando alcuni file video piuttosto grandi (200 mb) nella directory File app prima.

Per l'archiviazione interna, penso che l'unico limite sia la quantità di memoria interna resa disponibile per tutte le applicazioni da condividere. Che come @Ted Hopp menzionato è piuttosto piccolo su alcuni dei dispositivi più vecchi e di fascia bassa. Ma sui dispositivi più recenti e di fascia più alta hanno iniziato a rimbalzare su una quantità ragionevole, anche se il dispositivo ha molto spazio, potrebbe comunque essere occupato da altre applicazioni (quindi è necessario testare cosa accadrà in questo scenario).

Vale anche la pena ricordare che se si utilizza una memoria esterna come la scheda SD, il file JSON potrebbe essere tecnicamente modificato dall'utente. Potrebbero aprirlo in un editor di testo e iniziare a cambiare i valori non elaborati se ne avessero voglia. (Questo è anche possibile se si sceglie di utilizzare la memoria interna, ma richiederebbe un dispositivo rooted, mentre se è memorizzato sulla scheda SD non richiederebbe root)

Quindi se si stanno memorizzando informazioni che si preferiscono l'utente non ha la possibilità di modificare manualmente, si consiglia di tenerne conto.

Problemi correlati