Android

사용자 정의 이벤트 발생 및 수신 - otto (Broadcast)

Dean83 2022. 6. 7. 10:20

C#으로 보자면, 사용자 임의 이벤트를 발생(EventHandler 이용), 수신하는 방법이라고 생각하면 된다. 

 

* build.gradle 에 다음을 추가   

implementation 'com.squareup:otto:1.3.8'

 

1. 클래스 생성

   - 다음의 클래스를 생성한다. 

public final class LocalEventBus {
    private static final Bus BUS = new Bus(ThreadEnforcer.ANY);

    public static Bus getInstance()
    {
        return BUS;
    }

    private LocalEventBus()
    {

    }
}

 

2. listen 할 클래스에 이벤트 연결 

     - onCreate 등에서 register 코드 추가 (마찬가지로, 더이상 사용치 않을때는 unregister를 호출해야함)

LocalEventBus.getInstance().register(this);

 3. listen 할 함수 생성

     - @Subscribe를 이용.

 @Subscribe
  public void TestFunc(인자값)
  {
    ...
  }

4. 이벤트 발생

    - 아무곳에서나 이벤트 발생시킬수 있다. 심지어 이벤트 수신 클래스에서 이벤트 발생 - 자체수신도 된다. 

LocalEventBus.getInstance().post(인자값);