2014-12-05 2 views
0

지금은 Google 검색을 해봤지만 문서를 읽지 만 답변을 찾을 수 없습니다. 내 [단순화] 시나리오 :EventBus 게시 또는 게시 AbstractThreadedSyncAdapter에서 Activity로 Stitchy

사용자가 먼저 앱에 로그인하면 동기화 요청이 실행되고 내 onPerformSync가 호출됩니다. AbstractThreadedSyncAdapter에서 EventBus를 통해 MainActivity에 이벤트를 게시하려고합니다. 동기화가 끝나면 으로 보내야 만 MainActivity가 호출되어 모든 작업이 완료되지만 작동하지 않습니다. 내 코드 :

onPerformSync

//Constructor 
    public MyMoneySyncAdapter(Context context, boolean autoInitialize) { 
     super(context, autoInitialize); 
     this.context = context; 
     EventBus.getDefault().post(new SyncEvent(SyncEvent.SyncStatus.Started)); 
    } 

AbstractThreadedSyncAdapter :

EventBus.getDefault().postSticky(new SyncEvent(SyncEvent.SyncStatus.Running)); 
//...some ops.... 
//all done 
EventBus.getDefault().postSticky(new SyncEvent(SyncEvent.SyncStatus.Finished)); 

그리고 MainActivity :

@Override 
    protected void onResume() { 
     super.onResume(); 
     EventBus.getDefault().register(this); 
     EventBus.getDefault().getStickyEvent(SyncEvent.class); 
    } 


public void onEventMainThread(SyncEvent event){ 
      //never gets called 
} 

이 가능 짝수는 syncService에서 이벤트를 게시하려면? 그렇지 않은 경우,이 문제점에 가장 적합한 솔루션은 무엇입니까?

감사합니다.

답변

0

내 syncAdapter에 android:process:sync을 사용하고 있었는데, 이것을 단지 LocalBroadcastManager으로 제거했지만, EventBus를 사용하면 문제가 없다고 생각합니다. 이는 프로세스 간 통신을 할 때 LocalBroadcast 나 이벤트를 보낼 수 없기 때문에 동일한 프로세스에 있어야하기 때문입니다. 그렇지 않으면 다른 접근 방식을 사용해야합니다.

관련 문제