[Android]Đơn giản hoá MVP với Lite-Cycle

Tuan Binh
blog.tuanbinh
Published in
2 min readApr 4, 2018

Một trong những vấn đề chính mà chúng ta phải đối mặt trong một ứng dụng Android là Life-Cycle và khi chúng ta sử dụng Architecture pattern giống như MVP thì càng phải chú ý. Chúng ta phải đặt các sự kiện liên quan đến Life-Cycle bên trong các Presenter interface để chúng ta có thể Update data dựa trên Life-Cycle. Lite-Cycle sẽ giúp chúng ta giảm thiểu thời gian làm việc đó.

The Old Way

Giả sử chúng ta có một Activity hiển thị current location trên Mapview, chúng ta sẽ có một View Interface như sau:

Activity implements View interface như sau:

Chúng ta có Presenter interface như sau:

Và một class implements Presenter

Vậy là chúng ta có thể handle start và stop Location-Retriever dựa vào Life-Cycle

The Easy Way

Thay vì phải khai báo các methods liên quan đến Life-Cycle trong Presenter Interface và phải gọi lại chúng trong Activity (hay Fragment), chúng ta có thể sử dụng thư viện Lite-Cycle để điều khiển việc đó.

Bước 1: Khai báo thư viện trong Gradle dependencies

Bước 2: Sửa lại lớp View interface cho kế thừa từ Life-Cycle Owner interface

Bước 3: Xoá các methods liên quan đến Life-Cycle trong lớp Presenter interface

Bước 4: Cập nhật Presenter Implementer với Lite-Cycle

Bây giờ trong Presenter Lite-Cycle sẽ điều khiển việc gọi LocationRetriever.start() trong hàm onStart(), và gọi LocationRetriever.stop() trong hàm onStop(). Bây giờ chúng ta chỉ việc khởi tạo LocationRetriever và việc khởi tạo này đã được thực hiện bên trong hàm locationRetriever(MainView)

Bước 5: Cập nhật Activity

--

--