2017-07-26 6 views
3

Existe-t-il un moyen de connaître la taille de l'ensemble en octets? Mon point en demandant ceci est que je sauve des listes d'objets parcelables dans mon bundle sur onSaveInstanceState.Taille de l'ensemble en octets

Je dois vérifier si la taille de l'ensemble est atteinte, c'est sa limite de taille et empêcher toute autre sauvegarde de données et empêcher l'apparition d'une exception TransactionTooLarge.

Répondre

3

Je pense que moyen le plus facile pour moi est:

fun getBundleSizeInBytes(bundle : Bundle) : Int { 
    val parcel = Parcel.obtain() 
    parcel.writeValue(bundle) 

    val bytes = parcel.marshall() 
    parcel.recycle() 

    return bytes.size 
} 
0

classe Parcel membre DataSize(), de sorte que le même résultat peut être atteint sans appeler Marshall():

int getBundleSizeInBytes(Bundle bundle) { 
    Parcel parcel = Parcel.obtain(); 
    int size; 

    parcel.writeBundle(bundle); 
    size = parcel.dataSize(); 
    parcel.recycle(); 

    return size; 
}