[Android 06] Commit và Apply


//Đây là một ít tản mạn về commit và apply, vì thế không cần đề mục, okay?, blogspot =_=!
Chắc hẳn nhiều bạn coder hoặc developer đều đã dùng ít nhất một trong hai phương thức commit hoặc apply khi sử dụng SharedPreferences.
Bản chất:
  •  editor.apply(), phương thức này là bất đồng bộ.
  • editor.commit(), phương thức này là đồng bộ.
Rõ ràng bạn có thể gọi cả apply() và commit().

SharedPreferences settings = getSharedPreferences(PREFS_FILE, MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(PREF_CONST, true);
//Nó sẽ goi bất đồng bộ để put giá trị vào SP mà không cần quan tâm tiến trình hiện tại ra làm sao.
editor.apply();
SharedPreferences settings = getSharedPreferences(PREFS_FILE, MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(PREF_CONST, true);
//Nó sẽ gọi đồng bộ put giá trị vào trong khi vẫn giữ tiến trình hiện tại hoàn thành.
boolean result = editor.commit();
Và một điều khá quan trọng, commit() sẽ trả về giá trị boolean, thông báo kết quả put vào là true hay false.
apply() được thêm vào từ Android 2.3(API 19), không trả về giá trị của kết quả thực thi.
Dĩ nhiên, chen miệng vào trong 1 cái hội đang bàn tán thì bạn sẽ nói nhanh hơn so với việc bạn phải chờ tới lượt để nói. Do đó, apply() nhanh hơn so với commit() trong môi trường bất đồng bộ. Ơ nhưng mà,... không thể so sánh con cá và con chim không biết bơi trong cùng một môi trường được! 😁
Khác với commit(), nó ghi vào preference lưu trữ liên tục đồng bộ, apply() thay đổi vùng nhớ bên trong SharedPreferences nhưng bắt đầu với bất đồng bộ trong disk, và không thông báo bất kì thất bại nào. Nếu một editor nào khác trong SharedPreferences làm một hành động bình thường như commit() trong khi apply() vẫn đứng ngoài, thì commit() sẽ block cho tới khi tất cả commit bất đồng bộ hoàn thành và commit đồng bộ sẽ bị trì hoãn.
Sử dụng đúng mục đích sẽ tốt hơn cho cả 2 =)) 😂
HappyCoding!

Nhận xét

Bài đăng phổ biến từ blog này

[Android-02] LayoutParams trong Android