서비스 액세스 변수의 동적 바인딩
런타임 시에 서비스를 선택하거나 변수가 바인드된 서비스를 변경하는 데 동적 바인딩을 사용할 수 있습니다.
변수를 동적으로 바인드하려면 @BindService 특성 대신 ServiceLib EGL 라이브러리의 함수를 사용하십시오. 이 옵션은 Rich UI 핸들러 또는 관련 라이브러리의 전용 서비스에 대한 액세스에는 사용할 수 없습니다.
매우 유사한 두 서비스 구현에 대해 배치 디스크립터 파일에 항목을 작성했다고 가정해 보십시오.
<webBinding interface="interfaces.SpeechTranslator"
name="TranslateSpanish" port="SpanishPort"/>
<webBinding interface="interfaces.SpeechTranslator"
name="TranslateGerman" port="GermanPort"/>
사용자는 이러한 각 항목에 대해 하나씩, 두 개의 변수를 작성하고 바인드할 수 있습니다.
또는, 이들 항목이 공유하는 인터페이스 파트를 기반으로 하는 하나의 변수를 작성할 수 있습니다. 그 후 ServiceLib.bindService() 시스템 함수를 사용하여
이 변수를 사용할 서비스에 바인드할 수 있습니다. - 배치 디스크립터 항목에 있는 인터페이스 또는 서비스 파트를 기반으로 하는 변수를 작성하십시오.
myTranslator SpeechTranslator; - bindService() 함수를 사용하여 이 변수를 서비스 구현에 바인드하십시오.
이 경우 myTranslator 변수는 이제 TranslateSpanish라는 항목에 바인드됩니다.myTranslator = ServiceLib.bindService("TranslateSpanish"); - 변수를 사용하여 서비스에 액세스하십시오.
mySpanishString string = myTranslator.translate ("This sentence is in Spanish"); - bindService() 함수를 다시 사용하여 이 서비스를 다른 구현에 바인드할 수 있습니다.
myTranslator = ServiceLib.bindService("TranslateGerman"); - 이제 이 변수를 사용하여 다른 서비스에 액세스할 수 있습니다.
myGermanString string = myTranslator.translate ("This sentence is in German");