type - android:resource xml
Android中資產和原始資源的原因 (2)
這是某種哲學問題。 我在Android世界的學習中,我剛剛介紹了資產和原始資源。
我試圖理解使用原始資源與資產的原因。
它們都提供了未編譯的資源輸入流。
看來,資產提供了更多的靈活性和功能,然後原始資源。
一個。 您可以在資產下創建文件夾結構,而不是在原始下
灣 您可以在資產文件夾中動態列出所有資源,而不是在Raw文件夾中。
那麼,為什麼我會在Android中使用原始資源?
謝謝。
raw
文件夾和Assets
文件夾之間的主要區別。
由於raw是Resources(res)的子文件夾,因此Android會為其中的任何文件自動生成一個
ID
。 然後將該ID
存儲在R class
,R class
將用作對文件的引用,這意味著可以從其他Android類和方法甚至Android XML文件輕鬆訪問該ID
。 使用自動生成的ID是訪問Android中文件的最快方式。Assets文件夾是一個“附錄”目錄。 R類不會為放置在其中的文件生成ID ,因此它與某些Android類和方法不兼容。 另外,訪問它裡面的文件要慢得多, 因為你需要根據String來獲取它的句柄 。 但是,通過將文件放入此文件夾中可以更輕鬆地完成某些操作,例如將數據庫文件複製到系統內存。 沒有(簡單)的方法來創建一個Android資源文件夾內的文件的XML參考。
從Android文檔中 , raw/
目錄用於:
任意文件以原始格式保存。 要使用原始InputStream打開這些資源,請使用資源ID( R.raw.filename )調用Resources.openRawResource() 。
但是,如果您需要訪問原始文件名和文件層次結構,則可以考慮在
assets/
目錄中保存一些資源(而不是res / raw /) 。 assets /中的文件沒有給出資源ID,因此只能使用AssetManager讀取它們。
在一行中, raw/
目錄中的文件不由平台編譯 , 分配有資源ID , 不能被分組到子文件夾中,而如果您想以其他方式使用assets/
目錄。