Lưu Trữ Dữ Liệu Với SharedPreferences | How Kteam
Có thể bạn quan tâm
Dẫn nhập
Ở các bài học trước, chúng ta đã cùng nhau tìm hiểu về XỬ LÝ NỘI DUNG ĐA PHƯƠNG TIỆN TRONG ANDROID và viết một chương trình phát nhạc đơn giản.
Ở bài học này, chúng ta sẽ tìm hiểu về một trong những phương thức lưu trữ dữ liệu của Android là dạng Key-Value, giá trị được lưu vào vùng nhớ riêng của ứng dụng dưới dạng file XML.
Nội dung
Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:
- CẤU TRÚC CƠ BẢN CỦA MỘT CHƯƠNG TRÌNH ANDROID
Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:
- SharedPreferences là gì?
- Làm sao để tạo object dạng Singleton.
Các kiểu lưu trữ dữ liệu trong Android
Hệ điều hành Android có hỗ trợ kha khá các phương thức lưu trữ dữ liệu. Việc bạn chọn phương thức nào tuỳ thuộc vào nhu cầu và tính chất của nhu cầu đó, cũng như dung lượng cần lưu trữ là bao nhiêu.
Các phương thức nói trên bao gồm:
- Shared Preferences: Lưu trữ dữ liệu dạng Key-Value.
- Internal Storage: Lưu trữ dữ liệu vào vùng nhớ của thiết bị.
- External Storage: Lưu trữ dữ liệu vào vùng nhớ ngoài được chia sẻ.
- SQLite Database: Lưu trữ dữ liệu vào cơ sở dữ liệu được tích hợp trong Android. Cơ sở dữ liệu này là SQLite.
- Network: Lưu trữ dữ liệu trên server riêng của bạn, truy cập và lấy về qua API của server.
SharedPreferences là một Framework, nói đúng hơn là một tính năng giúp bạn lưu giữ liệu dưới dạng khoá-giá trị.
- Mỗi SharedPreferences đều đi kèm với một Context.
- Gọi hàmedit() để tạo ra một object của SharedPreferences.Editor()
- Thêm dữ liệu bằng các phương thức nhưputString / putBoolean,…
- Thực thi chỉnh sửa bằng phương thức commit().
Có lẽ đến đây thì các bạn cũng đã hình dung ra được phần nào, nhưng thực sự thì những thứ trên để làm gì? Chúng ta cùng làm một ví dụ nhỏ:
Ứng dụng lưu giữ tên đăng nhập
Bước 1: Tạo một project mới với tên SharedPreferencesExample

- Và chọn loại là Empty Activity như thường lệ.

Bước 2: Chúng ta sẽ tạo những thành phần sau ở trang activity_main.xml
- Một EditText có chức năng nhập dữ liệu vào.
- Một button Save dùng để lưu dữ liệu đã nhập vào SharedPreferences.
- Một button Clear để xoá hết dữ liệu trong SharedPreferences.
Code sẽ có dạng như sau:
- activity_main.xml
Trong file MainActivity.java, chúng ta sẽ khai báo các thành phần cần thiết cho nó:
SharedPreferences sharedPreferences; SharedPreferences.Editor editor; EditText etData; Button btnSave; Button btnClear;Và khai báo hàm khởi tạo các thành phần của SharedPreferencescho dễ dùng:
private void initPreferences() { sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); editor = sharedPreferences.edit(); }Bước 3: Vì code có nhiều thành phần nên chúng ta sẽ khai báo cho nó implements interface View.OnClickListener:
public class MainActivity extends AppCompatActivity implements View.OnClickListenerBước 4: Trong hàm onCreate, chúng ta sẽ sửa lại như sau:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initPreferences(); etData = (EditText) findViewById(R.id.et_data); btnSave = (Button) findViewById(R.id.btn_save); btnClear = (Button) findViewById(R.id.btn_clear); String savedData = sharedPreferences.getString("DATA", ""); etData.setText(savedData); btnSave.setOnClickListener(this); btnClear.setOnClickListener(this); }Và hàm onClick, hàm này thì bắt buộc phải có do ta vừa implements từ OnClickListener:
@Override public void onClick(View view) { if (view == btnSave) { // Nếu click vào nút Save, ta sẽ lưu dữ liệu lại. String data = etData.getText().toString(); // "DATA" là key, data tham số thứ 2 là value. editor.putString("DATA", data); editor.commit(); } else if (view == btnClear) { // Nếu click vào nút Clear, ta sẽ xoá dữ liệu đi. etData.setText(""); editor.clear(); editor.commit(); } }Bước 5: Chạy thử thôi, tuy nhiên các bạn chú ý các bước như hình nhé:
- Chạy thử, nhập chữ, sau đó click nút SAVE:

- Sau đó thoát app bằng cách clear ứng dụng khỏi bộ nhớ. Cái này tuỳ máy sẽ có cách khác nhau, nhưng với máy của mình (Samsung Galaxy S5) thì nó dạng dạng như này:

- Lần sau mở app lên, các bạn sẽ thấy chữ vẫn còn đó:

Và nếu các bạn muốn xoá dữ liệu đi thì chỉ việc nhấn nút CLEAR, lần sau mở app, chữ sẽ biến mất.
Kết luận
Qua bài này chúng ta đã nắm được cách sử dụng SharedPreferences và ứng dụng của nó vào một ví dụ nho nhỏ.
Bài sau chúng ta sẽ tìm hiểu về LƯU TRỮ DỮ LIỆU VỚI SQLITE.
Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Lưu trữ dữ liệu với SharedPreferences dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!
Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
CỘNG ĐỒNG HỎI ĐÁP HOWKTEAM.COM
GROUP THẢO LUẬN FACEBOOK Từ khóa » Code Lưu Trữ Dữ Liệu Trong Android
-
Bài 17: Lưu Trữ Dữ Liệu Trong Android - Lập Trình Android Cơ Bản
-
Tổng Quan Về Lưu Trữ Dữ Liệu Và Tệp | Android Developers
-
Android Từ đầu: Cách Lưu Trữ Dữ Liệu ứng Dụng Tại Cục Bộ - Code
-
Hướng Dẫn Lập Trình Android Với Bộ Lưu Trữ Trong (Internal Storage)
-
Hướng Dẫn Lập Trình Android Với Bộ Lưu Trữ Ngoài (External Storage)
-
Android – Lưu Trữ Dữ Liệu Trên File - Phở Code
-
Lập Trình Android Với Bộ Nhớ Trong (Internal Storage) - Viblo
-
Cơ Sở Dữ Liệu Trong Android - Viblo
-
Học Android: Lưu Trữ Dữ Liệu Với SharedPreferences - YouTube
-
Đọc Ghi Dữ Liệu Với Bộ Nhớ Trong Internal Storage Trong Android
-
Lưu Trữ Dữ Liệu Trong Android (Bài 5) - Gia Sư Tin Học
-
Lập Trình Android - Lưu Tập Tin ở Bộ Nhớ Ngoài
-
Sử Dụng SQLite Trong Android (phần 1)