Android & Kiến trúc
Hiển thị dữ liệu đã lưu rồi làm mới trên Android
Phân biệt chưa có dữ liệu, đang làm mới và có bản cũ khi mạng lỗi.
Thích và đánh giá Bình luận và hỏi đáp1. Tách nội dung khỏi trạng thái làm mới
Màn hình thời khóa biểu có thể có bản đã lưu và đồng thời đang lấy phiên mới. Nếu dùng một biến duy nhất chỉ có Loading hoặc Success, màn hình dễ biến mất trong lúc cập nhật. Biểu diễn dữ liệu và trạng thái làm mới thành các thuộc tính riêng để giao diện quyết định hiện nội dung, chỉ báo và thông báo phù hợp.
2. Chọn nguồn dữ liệu cho màn hình
Nếu dùng cơ sở dữ liệu làm nguồn đọc, kết quả mạng nên được kiểm tra và ghi vào đó, rồi giao diện nhận bản mới từ cùng nguồn. Khi mạng lỗi, bản lưu vẫn hiển thị kèm trạng thái làm mới thất bại. Khi chưa có bản lưu, lỗi mạng cần một trạng thái riêng để người dùng biết lý do màn hình trống.
3. So chuỗi trạng thái của ba trường hợp
Mẫu Python dùng trình sinh để xuất từng trạng thái. Với bộ nhớ đệm có dữ liệu và lỗi mạng, trạng thái cuối còn bản cũ. Khi tải thành công, bản mới thay thế bản cũ. Nếu cả mạng và bộ nhớ đệm đều không có dữ liệu, trạng thái cuối báo lỗi và không có nội dung. Kiểm tra chuỗi giúp phát hiện nháy màn hình trống.
Chạy ví dụ bằng python android_hien_cache_roi_lam_moi.py.
Môi trường thực hành. Python 3.10 trở lên. Ví dụ dùng thư viện chuẩn Python. Đây là mô hình Python để kiểm tra logic trước khi chuyển sang dự án Android.
def tai_lich(ban_luu, doc_mang):
yield ban_luu, "đang làm mới"
try:
ban_moi = doc_mang()
except TimeoutError:
yield ban_luu, "lỗi mạng"
else:
yield ban_moi, "đã làm mới"
def mat_mang():
raise TimeoutError
assert list(tai_lich("lịch cũ", mat_mang))[-1] == ("lịch cũ", "lỗi mạng")
assert list(tai_lich("lịch cũ", lambda: "lịch mới"))[-1] == ("lịch mới", "đã làm mới")
assert list(tai_lich(None, mat_mang))[-1] == (None, "lỗi mạng")
print("Kiểm chứng đủ ba luồng làm mới.")4. Đo độ mới và chất lượng trải nghiệm
Đặt ngưỡng độ cũ theo nghiệp vụ. Màn hình lịch có thể vẫn đọc được bản cũ nhưng nên hiển thị mốc đồng bộ. Nếu dữ liệu chứa thay đổi quan trọng, xác định yêu cầu làm mới trước khi thực hiện hành động tiếp theo. Thử khởi động lạnh, mất mạng giữa chừng và chuyển màn hình trong khi yêu cầu đang chạy.
Đọc thêm Hướng dẫn kiến trúc ứng dụng Android.