Lớp SharedPreferences.Editor
có chức năng clear()
, loại bỏ tất cả các tùy chọn đã lưu trữ của bạn (sau commit()
). Bạn có thể tạo cờ boolean để chỉ ra nếu cập nhật cần thiết:
void updatePreferences() {
SharedPreferences prefs = ...;
if(prefs.getBoolean("update_required", true)) {
SharedPreferences.Editor editor = prefs.edit();
editor.clear();
/*....make the updates....*/
editor.putBoolean("update_required", false)
editor.commit();
}
}
Và sau đó bạn cần gọi điều này trong hoạt động chính (bắt đầu lần đầu) trước khi bạn truy cập bất kỳ người thích nào.
EDIT
Để có được phiên bản hiện tại (Các mã phiên khai báo trong manifest):
int version = 1;
try {
version = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
if(version > ...) {
//do something
}
EDIT
Nếu bạn muốn làm một số thao tác cập nhật, bất cứ khi nào thay đổi phiên bản, sau đó bạn có thể làm điều gì đó như sau:
void runUpdatesIfNecessary() {
int versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
SharedPreferences prefs = ...;
if (prefs.getInt("lastUpdate", 0) != versionCode) {
try {
runUpddates();
// Commiting in the preferences, that the update was successful.
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("lastUpdate", versionCode);
editor.commit();
} catch(Throwable t) {
// update failed, or cancelled
}
}
}
Nguồn
2012-09-12 04:04:43
Có thể cho biết thời điểm người dùng quyết định cập nhật từ thị trường Google Play không? – Mel
Đó là chính xác những gì mã này làm: nếu phiên bản sẽ là mới thì bạn sẽ biết rằng người dùng quyết định làm một bản cập nhật – Phate
Nó không phải là một cách thực sự đẹp để làm việc, nhưng bạn cũng có thể bắt đầu lưu trữ phiên bản hiện tại sharedpreferences và khi nó không khớp với phiên bản ứng dụng thực tế của bạn (được hiển thị ở trên, cách tải xuống), bạn cũng có thể làm điều gì đó. –