Lắng nghe sự thay đổi dữ liệu Realm Background trong Clean Architecture (Realm + Flow + Clean Architecture)

Tram Ho

Mở đầu

Tôi thích dùng realm trong dự án vì tốc độ và tính linh hoạt khi lắng nghe sự thay đổi dữ liệu từ database,
Thế nhưng điều đó không còn khi tôi làm việc với một dự án xây dựng theo mô hình clean architecture bởi tính độc lập giữa các tầng trong dự án.

Cách

Có cách nào không? có chứ và có nhiều, chúng ta cùng thử liệt kê nhé:

Realm + Broadcast Receiver —> quá tốn tài nguyên, cần phải viết hàm đăng ký lắng nghe và hủy đăng ký của Broadcast Receiver

Realm + Live Data —> hay, nhưng live data là của android mà tầng nghiệp vụ (Domain) thì không nên chứa android trong đó

Realm + Rx —> hay, nhưng yêu cầu toàn bộ luồng xử lý sẽ phải xử lý trong luồng main thread (ảnh hưởng đến UI)

Vậy còn cách nào nữa không nhỉ, tôi đã rất tuyệt vọng cho đến khi Flow trong Coroutines xuất hiện tính linh hoạt trong đa luồng đã thu hút tôi tìm hiểm
thật tuyệt khi tôi đã tìm ra giải pháp cho nó =)), giờ thì cùng thử code nào

Code

Code Base

Code in Database

Code in Repository

Code in UseCase

Code in ViewModel

Code in Activity

Tài liệu tham khảo

Tự nghĩ ra =))), có thể sắp tới mình sẽ viết một bài trên medium

Kết

Tôi hi vọng sẽ giúp ích cho bạn trong quá trình làm việc với realm trong clean architecture, Nếu có bất kỳ thắc mắc nào thì đừng ngần ngại comment vào bài viết, tôi sẽ cố gắng trả lời. Cảm ơn

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo