Je suis au milieu de mes études Android, et je viens de couvrir les ressources Assets et Raw. J'essaie de comprendre la raison de l'utilisation des ressources brutes par rapport aux actifs.
Ils fournissent tous deux un flux d'entrée de ressources non compilé.
Il semble que les actifs offrent beaucoup plus de flexibilité et de fonctionnalités que les ressources brutes.
une. Vous pouvez créer des structures de dossiers sous
assets
mais pas sousraw
b. Vous pouvez lister toutes les ressources de manière dynamique dans le
assets
dossier mais pas dans leraw
dossier.
Alors, pourquoi utiliserais-je des ressources brutes dans Android?
android
android-resources
android-assets
Mortalus
la source
la source
Réponses:
Les principales différences entre le
raw
dossier et leassets
dossier.Étant donné que raw est un sous-dossier de Resources (res), Android générera automatiquement un
ID
pour tout fichier situé à l'intérieur. CeciID
est ensuite stocké dans leR class
qui agira comme une référence à un fichier, ce qui signifie qu'il peut être facilement accessible à partir d'autres classes et méthodes Android et même dans des fichiers XML Android. L'utilisation de l'ID généré automatiquement est le moyen le plus rapide d'accéder à un fichier sous Android.Le
assets
dossier est un répertoire «annexe» . La classe R ne génère pas d'ID pour les fichiers qui y sont placés, ce qui est moins compatible avec certaines classes et méthodes Android. L'accès aux fichiers dans leassets
dossier est plus lent car vous devrez obtenir un descripteur basé sur une chaîne . Cependant, certaines opérations sont plus faciles à effectuer en plaçant des fichiers dans ce dossier, comme la copie d'un fichier de base de données dans la mémoire du système. Il n'y a pas de moyen (facile) de créer une référence XML Android aux fichiers dans le dossier Assets.la source
/asset
répertoire.Depuis la documentation Android , le
raw/
répertoire est utilisé pour:Sur une ligne, les fichiers du
raw/
répertoire ne sont pas compilés par la plateforme , se voient attribuer un ID de ressource et ne peuvent pas être regroupés en sous-dossiers alors que si vous le souhaitez, utilisez leassets/
répertoire.la source
Ajout aux réponses données ci-dessus ...
Les fichiers / res / strings, / res / layout, / res / xml etc. sont tous compilés au format binaire. Mais si vous placez des fichiers, y compris des fichiers XML, dans le répertoire / res / raw / à la place, ils ne sont pas compilés au format binaire.
la source
file:///android_res/
préfixe pour pointer vers une ressource brute.