Sử dụng EventBus trong Android – Phần 1


0
Categories : Android

1. EventBus là gì?

EventBus là gì? EventBus là open-source thư viện cho Android và Java trong việc sử dụng mẫu Publisher/Subscriber. EventBus trung tâm kết nối giữa các lớp độc lập chỉ với một ít dòng code đơn giản, bỏ đi sự phụ thuộc và cái thiện tốc độ. Hiểu đơn giản là nó sẽ giúp gửi dữ liệu từ bất kỳ đâu trong ứng dụng của bạn. Ví dụ từ 1 activity tới service, từ service đến activity, đến fragment, từ service đến service, cũng khá giống với broadcast receiver nhưng linh hoạt hơn và dễ sử dụng hơn.

Lợi ích của việc sử dụng EventBus

  • Đơn giản trong việc giao tiếp giữa các Component
  • Tách biệt trong việc nhận và gửi
  • Chạy tối với UI (Activities , Fragments) và backgound threads
  • Tránh phức tạp và lỗi thường gặp về phụ thuộc và các vẫn đề về vòng đời
  • Hiệu suất cao
  • Được chứng minh với hơn 100,000,000 ứng dụng đã sử dụng
  • Có những chức năng nâng cao như phân phối tới thread , và mức độ ưu tiên của Subscriber

2. Cách dùng

  • Để sử dụng EventBus, cần thêm nó vào project

implementation ‘org.greenrobot:eventbus:3.0.0’

  • Khởi tạo event

public class UserEvent {

private User user;

public UserEvent(User user) {

this.user = user;

}

public User getUser() {

return user;

}

}

  • Đăng ký nhận sự kiện

if(!EventBus.getDefault().isRegistered(this)){

EventBus.getDefault().register(this);

}

  • Hủy đăng ký sự kiện(onStop)

EventBus.getDefault().unregister(this);

  • Gửi sự kiện

EventBus.getDefault().postSticky(new UserEvent(new User(“Hau”, “334”)));

or

EventBus.getDefault().post(new UserEvent(new User(“Hau”, “334”)));

  • Lắng nghe sự kiện

@Subscribe public void OnUser(UserEvent event){

//progress data here

}

Như vậy, chúng ta đã biết được cách:

  • Thêm EventBus vào project.
  • Định nghĩa một sự kiện
  • Đăng ký/Hủy đăng ký nhận sự kiện
  • Gửi/nhận sự kiện

Ở phần sau, chúng ta sẽ nói về các kiểu gửi sự kiện của EventBus. Các bạn có thể tham khảo souce code mẫu tại đây

Happy coding!

Leave a Reply

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *