Jestem w połowie moich studiów dotyczących Androida i właśnie omówiłem zasoby i zasoby surowe. Próbuję zrozumieć powód używania surowych zasobów w porównaniu z zasobami.
Oba zapewniają nieskompilowany strumień wejściowy zasobów.
Wydaje się, że zasoby zapewniają znacznie większą elastyczność i funkcjonalność niż zasoby surowe.
za. Struktury folderów można tworzyć pod,
assets
ale nie podraw
b. Możesz dynamicznie wyświetlić listę wszystkich zasobów w
assets
folderze, ale nie wraw
folderze.
Dlaczego więc miałbym używać zasobów Raw w systemie Android?
android
android-resources
android-assets
Mortalus
źródło
źródło
Odpowiedzi:
Główne różnice między
raw
folderem aassets
folderem.Ponieważ raw jest podfolderem zasobów (res), system Android automatycznie wygeneruje plik
ID
dla każdego znajdującego się w nim pliku. JestID
to następnie przechowywane wR class
pliku, który będzie działał jako odniesienie do pliku, co oznacza, że można go łatwo uzyskać z innych klas i metod systemu Android, a nawet z plików XML systemu Android. Korzystanie z automatycznie generowanego identyfikatora to najszybszy sposób na uzyskanie dostępu do pliku w systemie Android.assets
Folderu jest „dodatek” katalogu. Klasa R nie generuje identyfikatory dla plików umieszczonych tam, co jest mniej kompatybilny z niektórych klas i metod Android. Dostęp do pliku wassets
folderze jest wolniejszy, ponieważ będziesz musiał uzyskać do niego uchwyt oparty na łańcuchu . Jednak niektóre operacje są łatwiejsze do wykonania poprzez umieszczenie plików w tym folderze, na przykład skopiowanie pliku bazy danych do pamięci systemu. Nie ma (łatwego) sposobu na utworzenie odwołania XML systemu Android do plików w folderze Zasoby.źródło
/asset
.Z dokumentacji Android The
raw/
katalog służy do:W jednym wierszu pliki w
raw/
katalogu nie są kompilowane przez platformę , mają przypisany identyfikator zasobu i nie mogą być grupowane w podfoldery, podczas gdy jeśli chcesz, użyjassets/
katalogu.źródło
Dodając do odpowiedzi podanych powyżej ...
Pliki / res / strings, / res / layout, / res / xml itp. są kompilowane do formatu binarnego. Ale jeśli umieścisz pliki, w tym pliki XML, w katalogu / res / raw / zamiast tego, nie zostaną one skompilowane do formatu binarnego.
źródło
file:///android_res/
przedrostka do wskazania surowego zasobu.