webentwicklung-frage-antwort-db.com.de

Wann sollte ich die Assets anstelle von Rohressourcen in Android verwenden?

Ich bin mitten in meinem Studium in der Android-Welt und habe gerade die Ressourcen für Ressourcen und Ressourcen behandelt. Ich versuche, den Grund für die Verwendung von Raw-Ressourcen im Vergleich zu Assets zu verstehen.

  1. Beide bieten einen nicht kompilierten Ressourceneingangsstrom.

  2. Es scheint, dass Assets viel mehr Flexibilität und Funktionalität bieten als Raw-Ressourcen.

    ein. Sie können eine Ordnerstruktur unter Assets und nicht unter Raw erstellen

    b. Sie können alle Ressourcen dynamisch im Assets-Ordner und nicht im Raw-Ordner auflisten.

Warum sollte ich Raw-Ressourcen in Android verwenden?

130
Mortalus

Die Hauptunterschiede zwischen dem raw-Ordner und dem Assets-Ordner. 

  • Da es sich bei raw um einen Unterordner von Resources (res) handelt, generiert..... Automatisch eine ID-Datei für alle darin befindlichen Dateien. Dieses ID wird dann auf dem R class gespeichert, der als Referenz für eine Datei dient. Dies bedeutet, dass auf andere Android-Klassen Und Methoden und sogar in Android-XML-Dateien leicht zugegriffen werden kann. Die Verwendung der automatisch generierten -ID ist der schnellste Weg, um auf eine Datei in Android zuzugreifen.

  • Der Ordner Assets ist ein Verzeichnis "Appendix" . DieR-Klasse generiert Keine IDs für die dort platzierten Dateien, daher ist sie mit einigen Android-Klassen und -Methoden weniger kompatibel Außerdem ist es sehr viel langsamer, auf Auf eine darin enthaltene Datei zuzugreifen, da Sie einen Handle dafür benötigen Basierend auf einem String . Einige Vorgänge lassen sich jedoch einfacher durchführen, indem Dateien in diesen Ordner ablegen, z. B. das Kopieren einer Datenbankdatei in den Speicher des Systems. Es gibt keine (einfache) Möglichkeit, eine Android XML-Referenz für Dateien im Ordner Assets zu erstellen.

164
user370305

Aus der Android-Dokumentation , der raw/ Verzeichnis wird verwendet für:

Beliebige Dateien, die in Rohform gespeichert werden sollen. Um diese Ressourcen mit einem rohen InputStream zu öffnen, rufen Sie Resources.openRawResource () mit der Ressourcen-ID auf, die R.raw.filename ist.

Wenn Sie jedoch Zugriff auf die ursprünglichen Dateinamen und die Dateihierarchie benötigen, sollten Sie einige Ressourcen in der assets/ directory (anstelle von res/raw /). Dateien in assets / erhalten keine Ressourcen-ID. Sie können sie daher nur mit AssetManager lesen.


In einer Zeile werden die Dateien im raw/ Verzeichnis sind nicht von der Plattform kompiliert , eine Ressourcen-ID zugewiesen und können nicht in Unter gruppiert werden -Ordner wohingegen, wenn Sie die anderen verwenden möchten, die assets/ Verzeichnis.

26
Prince

Hinzufügen zu den Antworten oben ...

/ res/strings,/res/layout,/res/xml-Dateien usw. werden alle im Binärformat kompiliert. Wenn Sie jedoch Dateien einschließlich XML-Dateien im Verzeichnis/res/raw/ablegen, ist dies nicht der Fall werden in ein binäres Format übersetzt.

Ein großer Vorteil der Verwendung von Ressourcen gegenüber Rohstoffen ist die file:///Android_asset/Uri Präfix. Dies ist nützlich, um eine .__ zu laden. Asset in eine WebView. Zum Beispiel für den Zugriff auf ein Asset in assets/foo/index.html können Sie in Ihrem Projekt .__ aufrufen. loadUrl("file:///Android_asset/foo/index.html") lädt das HTML in das WebView.

0
Shubham Soni