2014-04-04 3 views
3

robospice 라이브러리 사용을 고려 중입니다. documentation/samples에서 요청은 백그라운드 스레드와 UI 스레드의 리스너에서 실행됩니다.비 UI 스레드에서 Robospice 리스너를 실행할 수 있습니까?

비 UI 스레드에서 robospice를 통해 리스너를 실행할 가능성이 있는지 궁금합니다.

예를 들어, A와 B 및 청취자 (로봇 스피 시스에서 실행할 수 있음)가 있다고 가정 해 봅시다. 요청 B는 요청 A의 결과에 따라 달라집니다. 따라서 A가 끝나면 청취자는 요청 B를 실행합니다. 괜찮습니다. 그러나 요청 B에 사용되는 파일의 일부를 읽으려는 경우이 UI를 차단합니다. 몇 ms, A의 리스너가 UI 스레드에서 실행되기 때문에.

예를 들어 다음과 같이 사용하여이 문제를 해결할 수 있습니다. HandlerThread, 그런데 UI가 A와 B 사이에서 어떤 종류의 프록시처럼 동작 할 것입니다.

그래서 UI 스레드 외부에서 Robospice 리스너를 실행할 수 있습니까?

답변

2

아니요, RoboSpice에서는 쉽게 불가능합니다.

자신 만의 새로운 SpiceService를 만든 다음 사용자 정의 DefaultRequestListenerNotifier이있는 사용자 정의 RequestProcessor를 전달하는 것이 유일한 방법입니다.

사용 사례는 무엇입니까?

+0

일반적인 경우 일 수 있습니다. 1) 백그라운드 스레드에서 일부 데이터로 작업해야합니다. 2) API에서 요청합니다. 3) 메인/UI 스레드로 전달하기 전에 RS에서 돌아올 때 데이터를 후 처리하고 싶습니다. 예, 전체 RS 요청을이 한 가지 작업에만 할애 할 수는 있지만 API 요청에만 RS를 사용하려는 경우 코드가 복잡해집니다. (염려의 분리) –

+0

좋은 지적. 우리는 홍보를 받아 들일 것입니다;) – Snicolas

+0

@Snicolas 어떤 업데이트? 지금 가능한가? – vojta