Dịch Vụ Bách khoa Sửa Chữa Chuyên nghiệp

Tổng quan về lưu trữ dữ liệu và tệp | Nhà phát triển Android | Android Developers

DataStore cung cấp cách thức hiện đại hơn để lưu trữ dữ liệu cục bộ. Bạn nên sử dụng DataStore thay vì SharedPreferences. Hãy đọc hướng dẫn về DataStore để biết thêm thông can android sử dụng một hệ thống tệp tương tự như hệ thống tệp dựa trên ổ đĩa trong các nền tảng khác. Hệ thống này cung cấp một số lựa chọn để bạn lưu dữ liệu ứng dụng của mình :
  • Bộ nhớ dành riêng cho ứng dụng: Lưu trữ các tệp chỉ dành cho ứng dụng của bạn,
    trong các thư mục chuyên dụng thuộc ổ bộ nhớ trong hoặc
    các thư mục chuyên dụng khác trong bộ nhớ ngoài. Hãy dùng các thư mục thuộc
    bộ nhớ trong để lưu thông tin nhạy cảm mà những ứng dụng khác không được truy cập.
  • Bộ nhớ dùng chung: Lưu trữ các tệp mà ứng dụng của bạn định chia sẻ với ứng dụng khác,
    bao gồm cả nội dung đa phương tiện, tài liệu và các tệp khác.
  • Lựa chọn ưu tiên: Lưu trữ dữ liệu gốc và riêng tư trong các cặp khóa-giá trị.
  • Cơ sở dữ liệu: Lưu trữ dữ liệu có cấu trúc trong một cơ sở dữ liệu riêng tư bằng cách sử dụng
    thư viện lưu trữ Room.

Đặc điểm của các tuỳ chọn này được tóm tắt trong bảng sau :

Loại nội dung Phương thức truy cập Cần cấp quyền Các ứng dụng khác có thể truy cập không? Các tệp bị xoá khi gỡ cài đặt ứng dụng?
Tệp dành riêng
cho ứng dụng
Tệp chỉ dành cho ứng dụng của bạn Từ bộ nhớ trong, getFilesDir() hoặc
getCacheDir()

Từ bộ nhớ ngoài,
getExternalFilesDir() hoặc
getExternalCacheDir()

Không cần thiết cho bộ nhớ trong

Không cần thiết cho bộ nhớ
ngoài khi ứng dụng được dùng trên những thiết bị chạy Android 4.4 (API cấp 19)

trở lên

Không
Nội dung đa phương tiện Các tệp đa phương tiện có thể chia sẻ (hình ảnh, tệp âm thanh, video) API MediaStore READ_EXTERNAL_STORAGE khi truy cập vào tệp của ứng dụng khác trên
Android 11 (API cấp 30) trở lên

READ_EXTERNAL_STORAGE hoặc WRITE_EXTERNAL_STORAGE
khi truy cập vào tệp của ứng dụng khác trên Android 10 (API cấp 29)

Cần có quyền đối với tất cả các tệp trên Android 9 (API cấp 28)
trở xuống

Có, mặc dù ứng dụng khác cần
quyền READ_EXTERNAL_STORAGE
Không
Tài liệu và
các tệp khác
Các loại nội dung khác có thể chia sẻ, bao gồm cả tệp đã tải xuống Khung truy cập bộ nhớ Không có Có, thông qua bộ chọn tệp hệ thống Không
Lựa chọn ưu tiên
về ứng dụng
Cặp khóa-giá trị Thư viện Lựa chọn ưu tiên
về Jetpack
Không có Không
Cơ sở dữ liệu Dữ liệu có cấu trúc Thư viện lưu trữ Room Không có Không

Giải pháp bạn chọn phụ thuộc vào nhu cầu cụ thể của bạn :

Dữ liệu của bạn cần bao nhiêu dung lượng?
Bộ nhớ trong có dung lượng hạn chế đối với dữ liệu dành riêng cho ứng dụng. Hãy dùng các loại
bộ nhớ khác nếu bạn cần tiết kiệm lượng dữ liệu đáng kể.
Quyền truy cập dữ liệu cần có mức độ đáng tin cậy thế nào?
Nếu chức năng cơ bản của ứng dụng yêu cầu các dữ liệu nhất định, chẳng hạn như khi ứng dụng
khởi động, hãy đặt dữ liệu vào thư mục bộ nhớ trong hoặc một cơ sở dữ liệu.
Các tệp dành riêng cho ứng dụng được lưu trữ trong bộ nhớ ngoài không phải lúc nào cũng truy cập được
vì một số thiết bị cho phép người dùng tháo thiết bị thực tế tương ứng với
bộ nhớ ngoài.
Bạn cần lưu trữ loại dữ liệu nào?
Nếu bạn có dữ liệu chỉ dành cho ứng dụng của mình, hãy dùng bộ nhớ
dành riêng cho ứng dụng. Đối với nội dung đa phương tiện có thể chia sẻ, hãy sử dụng bộ nhớ dùng chung để các ứng dụng khác có thể
truy cập vào nội dung đó. Đối với dữ liệu có cấu trúc, hãy sử dụng các lựa chọn ưu tiên (đối với dữ liệu
khóa-giá trị) hoặc một cơ sở dữ liệu (đối với dữ liệu chứa nhiều hơn 2 cột).
Dữ liệu có phải ở chế độ riêng tư trong ứng dụng của bạn không?
Khi lưu trữ dữ liệu nhạy cảm – dữ liệu mà các ứng dụng khác không được truy cập, hãy sử dụng bộ nhớ trong, lựa chọn ưu tiên hoặc một cơ sở dữ liệu. Bộ nhớ trong có
thêm lợi ích là dữ liệu được ẩn khỏi người dùng.

Danh mục vị trí bộ nhớ

android cung cấp two loại vị trí bộ nhớ thực : bộ nhớ trong và bộ nhớ ngoài. Trên hầu hết các thiết bị, bộ nhớ trong nhỏ hơn bộ nhớ ngoài. Tuy nhiên, bộ nhớ trong luôn có sẵn trên mọi thiết bị, make đó, đây là nơi đáng tin cậy hơn để lưu dữ liệu mà ứng dụng của bạn dựa vào .
Các ổ đĩa di động, chẳng hạn như thẻ south dakota, sẽ xuất hiện trong hệ thống tệp như một phần của bộ nhớ ngoài. android biểu thị các thiết bị này bằng một đường dẫn, chẳng hạn như /sdcard .
Thận trọng: Vị trí chính xác mà bạn có thể lưu tệp sẽ khác nhau tùy theo thiết bị. Vì lý do này, đừng sử dụng đường dẫn tệp được mã hoá cứng .
Các ứng dụng được lưu trữ vào bộ nhớ trong theo mặc định. Tuy nhiên, nếu kích thước APK rất lớn, bạn có thể cho biết lựa chọn ưu tiên trong tệp kê khai của ứng dụng là cài đặt ứng dụng trên bộ nhớ ngoài :

android:installLocation="preferExternal">
  ...

Quyền và quyền truy cập vào bộ nhớ ngoài

android xác định các quyền liên quan đến bộ nhớ sau đây : READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGEMANAGE_EXTERNAL_STORAGE .
Trong những phiên bản android trước đây, các ứng dụng cần khai báo quyền READ_EXTERNAL_STORAGE để truy cập vào mọi tệp bên ngoài thư mục dành riêng cho ứng dụng trong bộ nhớ ngoài. Ngoài radium, các ứng dụng cũng cần phải khai báo quyền WRITE_EXTERNAL_STORAGE để ghi vào mọi tệp bên ngoài thư mục dành riêng cho ứng dụng.

Các phiên bản android mới dựa vào mục đích của một tệp hơn là vị trí của tệp để xác định khả năng ứng dụng truy cập và ghi vào một tệp nhất định. Cụ thể là nếu ứng dụng của bạn nhắm đến android eleven ( API cấp thirty ) trở lên, thì quyền WRITE_EXTERNAL_STORAGE sẽ không ảnh hưởng đến quyền truy cập của ứng dụng vào bộ nhớ. Mô hình lưu trữ dựa trên mục đích này giúp cải thiện quyền riêng tư của người dùng vì các ứng dụng chỉ được cấp quyền truy cập vào những phần thực sự cần thiết trong hệ thống tệp của thiết bị .
android eleven giới thiệu quyền MANAGE_EXTERNAL_STORAGE, cho phép quyền ghi vào các tệp bên ngoài thư mục dành riêng cho ứng dụng và MediaStore. Để tìm hiểu thêm về quyền này và lý dress hầu hết ứng dụng không cần phải khai báo quyền này để thực hiện đầy đủ các trường hợp sử dụng, hãy xem hướng dẫn về cách quản lý mọi tệp trên thiết bị lưu trữ .

Bộ nhớ có giới hạn

Để mang lại cho người dùng nhiều quyền kiểm soát hơn đối với tệp của họ và giảm thiểu tình trạng tệp lộn xộn, các ứng dụng nhắm đến android ten ( API cấp twenty-nine ) trở lên được cấp quyền truy cập có giới hạn vào bộ nhớ ngoài, hoặc bộ nhớ có giới hạn, theo mặc định. Những ứng dụng như vậy chỉ có quyền truy cập vào thư mục dành riêng cho ứng dụng trong bộ nhớ ngoài, cũng như các loại nội droppings đa phương tiện cụ thể mà ứng dụng đó đã tạo .
Lưu ý: Nếu ứng dụng của bạn yêu cầu quyền liên quan đến bộ nhớ trong thời gian chạy, thì hộp thoại mà người dùng nhìn thấy sẽ cho biết rằng ứng dụng của bạn đang yêu cầu quyền truy cập rộng vào bộ nhớ ngoài, ngay cả chi bộ nhớ có giới hạn được bật .
Hãy dùng bộ nhớ có giới hạn, trừ chi ứng dụng của bạn cần quyền truy cập vào một tệp được lưu trữ bên ngoài thư mục dành riêng cho ứng dụng và bên ngoài thư mục mà MediaStore API có thể truy cập. Nếu lưu trữ các tệp dành riêng cho ứng dụng trong bộ nhớ ngoài, bạn có thể làm cho việc sử dụng bộ nhớ có giới hạn hơn trở nên dễ dàng hơn bằng cách đặt các tệp này vào một thư mục dành riêng cho ứng dụng trong bộ nhớ bên ngoài. Bằng cách đó, ứng dụng của bạn vẫn duy trì quyền truy cập vào các tệp này chi bộ nhớ có giới hạn được bật.

Để chuẩn bị ứng dụng của bạn cho bộ nhớ có giới hạn, hãy xem hướng dẫn về các trường hợp sử dụng bộ nhớ và phương pháp hay nhất. Nếu ứng dụng của bạn có trường hợp sử dụng khác không thuộc phạm united states virgin islands của bộ nhớ có giới hạn, hãy gửi một yêu cầu về tính năng. Bạn có thể tạm thời chọn không sử dụng bộ nhớ có giới hạn .

Xem tệp trên thiết bị

Để xem các tệp được lưu trữ trên một thiết bị, hãy dùng Trình khám phá tệp trên thiết bị của android studio .

Tài nguyên khác

Để biết thêm thông tin về cách lưu trữ dữ liệu, hãy tham khảo các tài nguyên sau .

Video

generator : https://dichvubachkhoa.vn
category : Lưu Trữ