1. Mở.
Xin chào!
Nếu bạn là người mới sử dụng android, bạn có biết rằng android cung cấp cho bạn một số tùy chọn để lưu dữ liệu ứng dụng của bạn không? Tôi sẽ nói rằng giải pháp bạn chọn phụ thuộc vào nhu cầu cụ thể của bạn, chẳng hạn như lượng dữ liệu bạn cần, loại dữ liệu bạn cần lưu trữ và liệu dữ liệu đó có riêng tư đối với ứng dụng hay không. Của bạn hoặc các ứng dụng hoặc người dùng khác có thể truy cập không?
Sau đây tôi sẽ giới thiệu với các bạn các phương pháp lưu trữ dữ liệu có sẵn do android cung cấp:
Lưu trữ tệp nội bộ : Lưu trữ các tệp dành riêng cho ứng dụng trên hệ thống tệp của thiết bị.
Lưu trữ tệp bên ngoài : Lưu trữ tệp trên hệ thống tệp có thể chia sẻ bên ngoài. Thường được sử dụng cho các tệp được chia sẻ bởi người dùng, chẳng hạn như hình ảnh và video.
Tùy chọn được chia sẻ : Các cặp khóa-giá trị lưu trữ dữ liệu thô.
Cơ sở dữ liệu : Lưu trữ dữ liệu có cấu trúc trong cơ sở dữ liệu riêng tư.
Ngoại trừ một số loại tệp trên bộ nhớ ngoài, tất cả bộ nhớ này dành cho dữ liệu ứng dụng riêng tư – dữ liệu mà các ứng dụng khác không thể truy cập cục bộ. Nếu muốn chia sẻ tệp với các ứng dụng khác, bạn nên sử dụng api trình cung cấp tệp
Nếu bạn muốn chia sẻ dữ liệu để các ứng dụng khác sử dụng, bạn có thể sử dụng nhà cung cấp nội dung. Các nhà cung cấp nội dung cung cấp cho bạn toàn quyền kiểm soát các quyền đọc / ghi có sẵn cho các ứng dụng khác, bất kể cách bạn lưu trữ dữ liệu của mình (mặc dù thường là cơ sở dữ liệu).
2. Lưu trữ nội bộ.
Theo mặc định thì các files được lưu vào Internal Storage (bộ nhớ trong) sẽ là private đối với ứng dụng của bạn, và các ứng dụng khác sẽ không kết nối được (người dùng cũng không được trừ khi chúng có quyền truy cập root). Điều này làm cho Internal Storage là một nơi lưu trữ dữ liệu tốt mà người dùng không cần truy cập trực tiếp. Hệ thống cung cấp một private directory trong hệ thống file cho mỗi ứng dụng, nơi bạn có thể sắp xếp bất kì tệp nào mà ứng dụng của bạn cần. Khi người dùng gỡ cài đặt ứng dụng của bạn, các file được lưu trữ trong Internal Storage được xóa bỏ. Bởi do hành vi này mà bạn không nên dùng Internal Storage để lưu trữ dữ liệu mà người dùng dự kiến muốn sử dụng độc lập với ứng dụng của bạn. Ví dụ ứng dụng của bạn cho phép chụp ảnh, người dùng sẽ mong đơi sẽ sử dụng những bức ảnh đó sau khi gỡ bỏ ứng dụng của bạn. Vì vậy bạn nên lưu các loại file đó ở External Storage.
Tệp bộ nhớ đệm nội bộ:
Nếu bạn muốn lưu trữ một số dữ liệu tạm thời, thay vì duy trì một kho lưu trữ dữ liệu liên tục, bạn nên sử dụng thư mục bộ nhớ cache để lưu trữ dữ liệu. Mỗi ứng dụng có một bộ đệm riêng dành riêng cho các loại tệp này. Khi một ứng dụng đang chạy nhưng hệ thống sắp hết bộ nhớ, android có thể xóa các tệp trong bộ nhớ cache này để khôi phục dung lượng. Tuy nhiên, bạn không nên dựa vào hệ thống để dọn dẹp các tệp này cho bạn. Bạn nên luôn duy trì các tệp bộ nhớ cache theo cách thủ công trong giới hạn tiêu thụ dung lượng hợp lý, chẳng hạn như 1mb. Các tệp này cũng bị xóa khi người dùng gỡ cài đặt của ứng dụng.
3. lưu trữ ngoài.
Mọi thiết bị Android đều hỗ trợ không gian lưu trữ External Storage (bộ nhớ ngoài) mà bạn có thể sử dụng để lưu file. Vùng nhớ này được gọi là External (ngoài) là bởi vì nói không phải chắc chắn là một vùng nhớ có thể truy cập được mà nó là một không gian lưu trữ. Là vùng nhớ mà người dùng có thể kết nối với máy tính, thậm chí có thể tháo lắp vật lý, ví dụ như các thẻ nhớ SD. Các file trên External Storage có thể được đọc ở mọi nơi và có thể được người dùng sửa đổi khi chúng cho phép như là một USB để có thể chuyển đổi dữ liệu sang máy tính.
Do đó, trước khi cố gắng truy cập các tệp trong bộ nhớ ngoài trong ứng dụng của mình, bạn nên kiểm tra xem các thư mục này và tệp trong đó có sẵn không
Nói chung, bạn nên sử dụng bộ nhớ ngoài để lưu trữ dữ liệu mà các ứng dụng khác có thể truy cập và dữ liệu đó vẫn tồn tại khi người dùng gỡ cài đặt ứng dụng của bạn. Chẳng hạn như ảnh đã chụp hoặc các tệp đã tải xuống trước đó. Các thư mục công cộng tiêu chuẩn sẽ được cung cấp cho các loại tệp này, vì vậy người dùng có một nơi cho ảnh, nhạc chuông, nhạc, v.v.
Bạn cũng có thể lưu tệp vào bộ nhớ ngoài trong một thư mục dành riêng cho ứng dụng, thư mục này sẽ bị xóa khi người dùng gỡ cài đặt ứng dụng trên điện thoại. Điều này có thể thay thế bộ nhớ trong nếu cần thêm dung lượng, nhưng không có gì đảm bảo rằng các tệp ở đây sẽ có thể truy cập được vì người dùng có thể xóa hoặc tháo thẻ sd. Và những tệp đó có thể đọc được ở mọi nơi, chúng chỉ được sao lưu vào một nơi, không được chia sẻ với các ứng dụng khác.
4. Tùy chọn được Chia sẻ
Nếu bạn không lưu nhiều dữ liệu và dữ liệu không cần cấu trúc, bạn nên sử dụng tùy chọn chia sẻ. Loại lưu trữ này cho phép bạn đọc và ghi các cặp khóa-giá trị của các kiểu dữ liệu nguyên thủy: booleans, float, ints, longs và string
Các cặp khóa-giá trị này được ghi vào các tệp xml vẫn tồn tại trong khi ứng dụng đang được sử dụng, ngay cả khi ứng dụng bị chấm dứt. Bạn có thể chỉ định thủ công tên của tệp này cho mỗi thao tác lưu trữ dữ liệu.
Tên Shared Preferences đôi khi gây ra một chút hiểu lầm bởi vì nó không phải hoàn toàn để lưu những tùy chọn của người dùng, chẳng hạn như nhạc chuông mà người dùng đã chọn. Bạn chỉ có thể dùng Shared Preferences để lưu bất kì loại dữ liệu đơn giản nào, chẳng hạn như điểm số cao của người dùng. Tuy nhiên nếu bạn muốn lưu tùy chon người dùng cho ứng dụng của mình bạn có thể dùng PreferenceActivity có thời gian mình sẽ trình bày sau nhé.
5. Cơ sở dữ liệu
Android cung cấp hỗ trợ đầy đủ cho SQLite Database. Bất kì cơ sở dữ liệu mà bạn tạo chỉ có thể truy cập được bởi ứng dụng của bạn. Tuy nhiên thay vì sử dụng các SQLite API trực tiếp, thì hiện tại Android khuyến khích các Developers tên tạo và tương tác với cơ sở dữ liệu của mình với Room Databse, một component trong Android Architecture của gói Jetpack.
room cung cấp một lớp ánh xạ đối tượng trừu tượng cho phép truy cập cơ sở dữ liệu nhanh chóng, đồng thời tận dụng các khả năng đầy đủ của cơ sở dữ liệu sqlite.
Mặc dù có thể sử dụng nó với cơ sở dữ liệu sqlite, nhưng để sử dụng bây giờ có vẻ tốn rất nhiều thời gian và công sức ^^:
Thư viện Room giải quyết tất cả những vấn đề này trong khi cung cấp một lớp trừu tượng trên sqlite.
6. Tóm tắt.
Qua bài viết này, tôi đã liệt kê các phương pháp android cung cấp cho các ứng dụng để lưu trữ dữ liệu. Bạn cũng có thể sử dụng kết nối mạng để lưu trữ dữ liệu của mình. Để sử dụng internet, bạn có thể sử dụng gói java.net và android.net được cung cấp.
Hy vọng rằng bài viết này đã cung cấp cho bạn cái nhìn tổng quan về cách bắt đầu với bộ nhớ trong Android. Cảm ơn rât nhiều!