2013-10-03 4 views
1

API에서 스레드를 실행해야합니다. 이제는 내 API에서 백그라운드 작업을 통합해야하는지 잘 모르겠습니다. 스레드가 안전하도록하는 것은 문제가 아닙니다.백그라운드 작업을 API에 통합해야합니까?

안드로이드 (IntentServices, 네이티브 스레드 솔루션, AsyncTask 등)에서 스레딩을 수행 할 가능성이 많이 있습니다. 이제 백그라운드 작업을 통합하면 AsyncTask라고 가정 해 봅시다. API를 사용하는 개발자는이를 사용하는 데 매우 제한적입니다. f.e. 오리 엔테이션 변경, 개발자가 제대로 반응 할 수 있어야합니다. 그리고 스레딩을하는 방법을 선택해야합니다.

최상의 조작성을 제공하기 위해 어떻게해야합니까? 사용 또는 무시할 수있는 작업을 제공합니까? API 스레드를 안전하게 만들고 개발자가 자신이 선택한 백그라운드 태스크에서 API를 구현하게하십시오.

내가 묻는 또 다른 이유는 Android/Java에서 대부분의 API는 백그라운드 작업을 제공하지 않지만 스레드 안전합니다.

그것에 대한 일반적인 규칙이 있습니까?

답변

1

내 모든 API 작업은 네트워크 또는 파일 읽기와 같이 부하가 큰 작업을 제외하고는 동기식이어야하며 콜백을 필요로하는 비동기 가능한 메서드를 제공해야합니다. 또한 API 비동기 콜백에 구현해야하는 인터페이스를 제공해야합니다.

API가 사용자 입력을 기다리고 폴링하는 버스 또는 서버 스타일 메소드로 구성된 경우 API 자체는 이 아니고이 주 스레드에서 실행되어야합니다. 서비스 또는 Asynctask로 빌드해야합니다. IU를 업데이트 할 수 있으려면 핸들러에서 주 스레드에 대한 참조를 유지하는 것을 잊지 마십시오.

그리고 그 유형이 아니더라도 백그라운드 스레드에서 빌드하고 내부적으로 호출하기 위해 Handler를 사용합니다.

+0

나는 당신과 함께합니다. 콜백을 제공하고 적절한 상호 작용을 위해 핸들러를 사용하는 것은 문제가 아닙니다. API에는 서비스가 포함되어 있다고 가정합니다. 그런 다음 매니페스트에 등록해야합니다. 그것이 내가 피하고 싶습니다. 방향 변경에도 API는이 이벤트에서 생존 할 수 있어야합니다. IMO는 API에서 백그라운드 작업을 통합하지 않고 제어 할 수있는 점입니다. –

관련 문제