2017-01-19 29 views
0

음악 플레이어 제작 중 배경에 음악을 스트리밍 할 수있는 서비스가 있습니다. 서비스를위한 활동과 서비스에서부터 메커니즘에 이르는 활동에 사용해야합니까? 이제 저는 녹색 로봇 EventBus와 AIDL을 사용하고 있습니다. EventBus에서 어느 것이 더 낫습니까? 내 응용 프로그램이 잘 작동하지만 문제는 응용 프로그램에서 ANR이 발생하는 동시 다중 클릭입니다. 귀하의 서비스와 활동은 AIDL을 사용하지 말아야 동일한 프로세스에있는 경우이 purpose.You이 기능을 달성하기 위해 IntentService를 사용할 수 있습니다에 대한AIDL, 인터페이스 콜백, EventBus, 브로드 캐스트 리시버?

recyclerViewAdapterTwo = new RecyclerViewAdapterTwo(ActivityTwo.this, trackList, categoriesList, new MusicTracksRecyclerViewAdapterTwo.ViewHolderOnClickHandler() { 
     @Override 
     public void onClick(int id, MusicTracksRecyclerViewAdapterTwo.VHItem vh) { 
      EventBus.getDefault().post(new PostSongListChangeToService(songDataList, position)); 
     } 
    }); 
+0

사용 "결합 서비스"패턴을 확인할 수 있습니다 (중 AIDL 또는 "지역 바운드 서비스"로) – pskink

+0

내 응용 프로그램은 잘 작동하지만 문제는 응용 프로그램에서 ANR을 유발하는 동시에 여러 클릭합니다. –

+0

코드가 없으면 "동시 다중 클릭"이란 무엇을 의미하는지 모르겠 음 – pskink

답변

1

EventBus, 인터페이스 콜백 모두 좋은 옵션입니다. 이를 위해 브로드 캐스트 수신기를 사용하지 마십시오.

이제 ANR의 경우 이벤트를 처리하는 위치/방식에 대해 몇 가지 코드를 알려주십시오. 다른 경우에는 백그라운드 스레드에서 대부분의 데이터를 사전 처리 한 다음 주 스레드로 바로 이동하여 실제로 재생/일시 정지/건너 뛰기 만 수행하십시오.

PS : 핸들러를 사용하여 MainThread에서 실제로 프리폼을 작성하는 경우, 한 번에 모든 것을 게시하지 말고, 실행하기 위해 msg/runnables 사이에 대기열을 만드십시오. 버튼 클릭시 약간의 지연이 추가 될 수 있지만 활동/서비스는 동결되지 않습니다. 이제 오토 이벤트 버스가 지금 RxJava 찬성되지 않습니다 한동안 이후 다른 옵션을 추가 http://square.github.io/otto/

+0

어떤 이벤트 버스가 더 좋습니까? –

+0

모든 이벤트 버스는 비슷한 동작을합니다. 나는 과거의 경험이있다. –

0

도 방송 수신기는 이해가되지 않습니다.

+0

입니다. IntentService를 사용하여이 기능을 구현할 수 있습니다. –

+0

또한이 경우 왜 AIDL을 사용하면 안됩니까? – pskink

+0

* 프로세스 * 란 Linux 프로세스 *를 의미합니까? 뭐가 잘못 됐는지 더 자세히 설명하고 인용문을 추가하십시오. – Enzokie

0

:

당신이 여기에 오토 참조 할 수 있습니다. RxJava는 스레드 스와핑에 대해 더 많은 유연성과 투명성을 제공하고 따라서 코드를 아름답게 유지할 수 있도록 해주는 거대한 세트 또는 기능 작동을 제공하므로 제안하십시오.

외부에서 이벤트를 쉽게 게시 할 수 없다는 점에서 이미 구독 된 소비자에게 제공되는 스트림.

이 "버스"기능을 활성화하려면 RHub을 시도하십시오.

당신은 example app