2012-03-05 20 views
110

đây là một số loại câu hỏi triết học ... Tôi đang ở giữa các nghiên cứu của mình trong thế giới Android và tôi chỉ đề cập đến tài nguyên và tài nguyên thô.Lý do Tài sản và Nguyên liệu trong Android

Tôi đang cố gắng hiểu lý do sử dụng Tài nguyên thô so với Nội dung.

  1. Cả hai đều cung cấp luồng đầu vào tài nguyên chưa được biên soạn.

  2. Dường như Tài sản cung cấp tính linh hoạt và chức năng nhiều hơn sau đó là Tài nguyên thô.

    a. Bạn có thể tạo cấu trúc thư mục trong Nội dung chứ không phải trong Raw

    b. bạn có thể liệt kê tất cả các tài nguyên động trong thư mục asset chứ không phải trong thư mục Raw.

Vậy tại sao tôi sử dụng tài nguyên thô trong Android?

Cảm ơn.

+0

Bản sao có thể có của [Khác biệt giữa thư mục/res và/asset] (http://stackoverflow.com/questions/5583608/difference-between-res-and-assets-directories) – rds

Trả lời

143

Sự khác biệt chính giữa thư mục raw và thư mục Assets.

  • Từ nguyên là một thư mục con của Tài (res), Android sẽ tự động tạo ra một ID cho bất kỳ tập tin nằm bên trong nó. ID sau đó được lưu trữ R class sẽ hoạt động như một tham chiếu đến một tệp, có nghĩa là nó có thể dễ dàng truy cập từ các lớp Android khác và phương pháp và thậm chí trong tệp XML của Android. Sử dụng tự động ID được tạo là cách nhanh nhất để có quyền truy cập vào tệp trong Android.

  • Thư mục nội dung là một thư mục “phụ lục”. Lớp R không không tạo ID là cho các tệp được đặt ở đó, vì vậy nó ít tương thích với một số lớp và phương pháp Android. Ngoài ra, việc truy cập một tệp ở bên trong nó còn chậm hơn, vì bạn sẽ cần phải xử lý nó dựa trên Chuỗi. Tuy nhiên, một số thao tác được thực hiện dễ dàng hơn bằng cách đặt các tệp trong thư mục này, như sao chép tệp cơ sở dữ liệu vào bộ nhớ của hệ thống . Không có cách nào (dễ) để tạo tài liệu tham khảo XML của Android cho các tệp bên trong thư mục Nội dung.

+0

Và tôi vẫn có thể sử dụng thư mục Nội dung . tôi hiểu rằng nó sẽ "khó" hơn để truy cập nó từ các lớp học Android và không thể tham chiếu đến nó từ Android XML nhưng vẫn còn, nó khó hiểu, các trường hợp sử dụng cho mỗi chủ đề là gì? – Mortalus

+0

Trường hợp sử dụng, Giả sử bạn phải sử dụng tệp cơ sở dữ liệu được tải trước với ứng dụng của bạn thì/nội dung tốt hơn và bạn phải sử dụng tệp xml được tải sẵn mà bạn có thể phân tích cú pháp trong ứng dụng của mình qua mã sau đó sử dụng/raw bạn có thể truy cập trực tiếp. – user370305

+0

để gạch dưới, các tập tin nào bạn đưa vào nguyên, và những gì bạn đưa vào tài sản? – josephus

17

Từ Android documentation, thư mục raw/ được sử dụng cho:

file Arbitrary lưu ở dạng raw. Để mở các tài nguyên này bằng raw InputStream, hãy gọi Resources.openRawResource() với ID tài nguyên, là R.raw.filename.

Tuy nhiên, nếu bạn cần truy cập vào tên file gốc và hệ thống phân cấp tập tin, bạn có thể cân nhắc tiết kiệm một số tài nguyên trong assets/ thư mục (thay vì res/thô /). Các tệp trong tài sản / không được cấp ID tài nguyên, do đó bạn chỉ có thể đọc chúng bằng cách sử dụng AssetManager.


Trong một dòng, các tập tin trong thư mục raw/not compiled by the platform, được gán một ID tài nguyênkhông thể được nhóm lại thành các thư mục con trong khi nếu bạn muốn nếu không sử dụng các thư mục assets/.

+1

Các tệp thô có phải là tùy chọn tốt nhất nếu bạn muốn sao chép tệp lớn vào thư mục lưu trữ không? –

+0

@ 40-Love Không giới hạn kích thước tệp cho Android 2.3 trở lên [trừ khi bạn đang hỗ trợ các phiên bản trước.] (Http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression -in-android-apps /) Bạn có thể chọn bất kỳ thư mục lưu trữ nào tùy thuộc vào yêu cầu của bạn. Sự khác biệt chính là cách các tệp này được truy cập. – Prince