2011-04-07 4 views
1

내 응용 프로그램에는 하나의 서비스와 일련의 활동이 있습니다.활동 동기화

각 활동은 작은 작업 (예 : 숫자 또는 텍스트 삽입 또는 환경 설정 표현)을 포함합니다.

서비스는 활동 또는 활동의 하위 집합을 시작합니다.

서비스가 시작되는 순서는 요일 시간과 함께 변경됩니다.

하지만 서비스는 매번 다음 활동을 시작하기 전에 활동 종료를 기다려야합니다 (활동 결과 얻기 위해).

내 생각은 두 가지 활동 실행 사이의 서비스에서 wait() 호출을 사용하는 것이 었습니다.

각 액티비티는 sendBroadcast를 사용하여 결과를 BroadcastReceiver으로 반환합니다.

BroadcastReceivernotify()을 실행하여 서비스를 해제하고 작업 결과를 서비스에 전달합니다.

분명히,이 아이디어는 작동하지 않습니다. 문제는 다음과 같습니다.

1) 서비스에서 많은 활동을 시작하면 각 활동이 속한 작업과 관련된 문제가 발생합니다.

2) 내가 Service 클래스 내부의 BroadcastReceiver을 선언 처음으로합니다 (ServiceBroadcastReceiver에서 정보를 전달하는 방법을 모른다, 그러나 서비스가 wait()를 입력 할 때 프로세스가 막힌 상태 및 BroadcastReceiver 수신하지).

제발, 나는 모든 종류의 제안을 받아들입니다. 응용 프로그램 아키텍처가 변경되었을 수 있습니까?

감사

답변

0

흐름은 다음을 트리거 한 활동은 일반적이다. Activity1을 끝낼 준비가되면 Activity2가 무엇인지 알고 Activity1에서 시작하도록 다시 설계해야합니다. 아마도 귀하의 봉사 활동은 귀하의 활동이 다음 활동이 될 결정을 내리기 위해 전화 할 수있는 방법을 폭로해야합니다. 서비스 및 활동이 동일한 프로세스에서 실행되고 서로 호출 할 수 있으므로 그렇게하는 것이 좋습니다.