私はAndroidの世界での研究の真っin中にいるので、AssetsとRawリソースについて説明しました。RawリソースとAssetsを使用する理由を理解しようとしています。
どちらも未コンパイルのリソース入力ストリームを提供します。
アセットは、Rawリソースよりもはるかに高い柔軟性と機能を提供するようです。
a。 RawではなくAssetsの下にフォルダ構造を作成できます
b。 Rawフォルダーではなく、アセットフォルダーにすべてのリソースを動的にリストできます。
では、なぜAndroidでRawリソースを使用するのですか?
raw
フォルダーとAssets
フォルダーの主な違い。
RawはResources(res)のサブフォルダーであるため、Androidは、その中にあるファイルに対してID
を自動的に生成します。このID
は、 R class
これはファイルへの参照として機能します。つまり、他のAndroidクラスおよびメソッドから、そしてAndroid XMLファイルでも使用できます。自動生成されたIDは、Androidのファイルにアクセスするための最速の方法です。
Assetsフォルダーは“ appendix”ディレクトリーです。 RクラスはIDを生成しませんそこに置かれたファイルに対して、そのため一部のAndroidクラスおよびメソッドとの互換性が低くなります。また、内部のファイルへのアクセスが非常に遅くなります。 Stringに基づいてハンドルを取得する必要があるため。ただし、一部の操作は、データベースファイルをシステムのメモリにコピーするなど、このフォルダーにファイルを配置することでより簡単に実行できます。 (簡単な)アセットフォルダー内のファイルへのAndroid XML参照を作成する方法。
Androidドキュメント から、raw/
ディレクトリは次の目的で使用されます。
生の形式で保存する任意のファイル。生のInputStreamでこれらのリソースを開くには、リソースIDでResources.openRawResource()を呼び出します。 R.raw.filename。
ただし、元のファイル名とファイル階層にアクセスする必要がある場合は、
assets/
ディレクトリ(res/raw /の代わりに)。assets /内のファイルにはリソースIDが与えられていないため、AssetManagerを使用した場合にのみそれらを読み取ることができます。
1行では、raw/
ディレクトリ内のファイルは platformによってコンパイルされません 、はリソースIDに割り当てられますおよびはサブフォルダにグループ化できません必要に応じてassets/
ディレクトリを使用します。
上記の回答に追加...
/ res/strings、/ res/layout、/ res/xmlファイルなどはすべてバイナリ形式にコンパイルされます。しかし、XMLファイルを含むファイルを/ res/raw /ディレクトリに配置する場合は、代わりに ' tはバイナリ形式にコンパイルされます。
生のリソースよりもアセットを使用する大きな利点の1つは、_
file:///Android_asset/
_ Uriプレフィックスです。これは、 WebViewへのアセット。たとえば、プロジェクト内のasset/foo/index.htmlにあるアセットにアクセスするには、loadUrl("file:///Android_asset/foo/index.html")
を呼び出して、そのHTMLをWebViewにロードします。