1

그래서 나는greenrobot eventbus를 사용하여 네트워크 통신을 사용하는 방법은 무엇입니까?

EventBus 당신을 위해 스레딩 처리 할 수 ​​GreenRobots 웹 사이트에 언급 된 다음과 같은 기능을 사용하고 싶습니다 : 이벤트가 게시 스레드에서 다른 스레드에 게시 할 수 있습니다. 일반적인 사용 사례는 UI 변경 사항을 처리하는 경우입니다. Android에서 UI 변경은 UI (메인) 스레드에서 수행해야합니다. 반면 네트워킹이나 시간 소모적 인 작업은 주 스레드에서 실행하지 않아야합니다.

내 안드로이드 앱에서 내 네트워킹 작업 (서버에서 데이터를 보내고받는)을 모두 처리하는 이벤트를 만들고 싶습니다.

정확히 어떻게해야합니까?

내가 이벤트 POJO에서 네트워크 호출을 다음 포스트 네트워크 호출 작업을 수행 할 수의 onEvent를 사용해야합니까 (나는 이것이 정확하거나 생각 해달라고?)

편집 :. 스레딩에 대한 이벤트 버스를 사용 할 수있다 모든 OnEvent 호출이 순차적으로 하나씩 차례로 실행되기 때문에 최적의 옵션이 아닐 수 있습니다. 따라서 버스를 차단할 수도 있고 그럴 수도 있습니다. 그러나 아래의 대답은 요구 사항이 모두 충족되면 수행 할 수있는 방법입니다.

답변

0

이벤트 버스가 필요하지 않은 아키텍처를 사용하는 것이 좋습니다. 이벤트 버스는 여전히 유용하며 자신이 찾고있는 것을 getting started guide에서 찾을 수 있다고 생각합니다.

일부 예제 코드 : 그래서

public class EventBusExample extends Activity { 

    @Override protected void onStart() { 
    super.onStart(); 
    EventBus.getDefault().register(this); 
    EventBus.getDefault().post(new BackgroundWorkEvent()); 
    } 

    @Override protected void onStop() { 
    super.onStop(); 
    EventBus.getDefault().unregister(this); 
    } 

    @Subscribe(threadMode = ThreadMode.ASYNC) 
    public void doBackgroundWork(BackgroundWorkEvent event) { 
    // do background work here 
    // when finished, post to ui thread 
    EventBus.getDefault().post(new UiWorkEvent()); 
    } 

    @Subscribe(threadMode = ThreadMode.MAIN) 
    public void doUiWork(UiWorkEvent event) { 
    // on main thread. do ui stuff 
    } 

    public static class BackgroundWorkEvent { 

    } 

    public static class UiWorkEvent { 

    } 

} 
+0

당신이 기본적으로 가지 바로 이벤트를 중첩된다? 그리고 한 가지 더 질문합니다. 발신자와 수신자가 동일한 활동에 참여하는 것이 올바른 구현입니까? –

+0

예제 코드는 모범 사례가 아닙니다. 나는 스레딩에 이벤트 버스를 사용하지 않는다. 그것은 어떻게 수행 될 수 있는지에 대한 간단한 예입니다. –

관련 문제