No products in the cart.
Dùng thư viện này khá là đơn giản, cám ơn tác giả đã tạo ra một thư viện tuyệt vời như thế này. Bạn có thể theo dõi cách làm bên dưới.
Thêm thư viện
implementation 'org.greenrobot:eventbus:3.1.1'
Thêm vào trong file gradle của Module: app/build.gradle
Tạo ra 1 class trong Java để lưu dữ liệu khi gửi
Thực chất bước này là định nghĩa một Event
public class ScanBleEvent { private String mStr; private boolean isScan; public ScanBleEvent(String mStr, boolean isScan) { this.mStr = mStr; this.isScan = isScan; } public String getmStr() { return mStr; } public void setmStr(String mStr) { this.mStr = mStr; } public boolean isScan() { return isScan; } public void setScan(boolean scan) { isScan = scan; } }
Đăng kí và huỷ đăng kí cho class bên trên
Chúng ta sẽ đăng ký tại nơi muốn nhận dữ liệu như Activity, Fragment.
@Override public void onStart() { super.onStart(); EventBus.getDefault().register(this); } @Override public void onStop() { Log.i(TAG, "onStop menu fragment"); EventBus.getDefault().unregister(this); super.onStop(); }
Xử lý sự kiện
Khi đã lắng nghe thì cần có chỗ để xử lý kết quả phải không? Chúng ta sẽ xử lý sự kiện như bên dưới. Tên sự kiện có thể tuỳ ý thay đổi. Chúng ta sẽ xử lí tại nơi nhận dữ liệu như Activity, Fragment cùng nơi với chỗ đã lắng nghe.
@Subscribe(threadMode = ThreadMode.MAIN) public void onScanBleEvent(ScanBleEvent event) { LogI("getmStr: " + event.getmStr()); LogI("isScan: " + event.isScan()); }
Bắn sự kiện
Bước cuối chúng ta sẽ bắn dữ liệu đi, những nơi đã đăng ký sẽ nhận được sự kiện này.
EventBus.getDefault().post(new ScanBleEvent("ok",true));
Dùng EventBus ta có thể:
- Truyền dữ liệu từ Activity đến Activity (thông thường dùng Intent).
- Truyền dữ liệu từ Activity đến Fragment (thông thường dùng Interface, Bundle, tạo đối tượng fragment).
- Truyền dữ liệu từ Service đến Activity (thông thường dùng broadcast).
- Truyền dữ liệu từ Fragment đến Fragment (thông thường dùng Interface hoặc Bundle).
- Truyền dữ liệu từ Fragment đến Activity (thông thường dùng Interface hoặc Bundle).
- Truyền dữ liệu từ Thread đến Activity (Handler, AsyncTask).
Bạn có thể đọc thêm ở đây:
https://github.com/greenrobot/EventBus
https://gunhansancar.com/ease-communication-between-activities-fragments-services/
Các bài viết không xem thì tiếc:
- Truyền dữ liệu giữa 2 fragment trong android
- Phóng to thu nhỏ trong Android với ScaleGestureDetector
- Fragment và Activity trong android cơ bản
- Truyền dữ liệu giữa các Activity trong android
- Cách dùng AsyncTask trong Android
- Chuyển một đối tượng sang Json trong Android
- Vòng đời Acivity trong android cơ bản
- Lập trình với Recyclerview trong Android – Bài 2 | dotrinh.com
- Lập trình phóng to thu nhỏ ảnh pinch in – pinch out trong Android
- Tạo seekbar và kiến thức hữu ích về seekbar trong Android
- Làm việc với font trong Android
- Gửi dữ liệu đến BLESerial3 bằng Bluetooth LE Android
- Hiểu về cách tổ chức file, bộ nhớ của app Android
- Lập trình với Recyclerview trong Android – Bài 3 | dotrinh.com
- Lập trình với Recyclerview trong Android – Bài 1 | dotrinh.com
1 Comment