1월, 2014의 게시물 표시

How to do Async at Android Phonegap custom plug-in.

이미지
Phonegap에서 Javascript와 plug-in 사이는 비동기로 호출된다는 것은 모두 아는 사실이다. 그런데 plug-in에서 다른 Activity을 비동기로 호출하는동안 Javascript에 return되는 Result을 대기 시키고 다른 Activity의 작업이 완료된 이후에 return하는 방법을 알아보자.
Flow는 다음과 같다. Javascript에서 custom-plugin의 “getAttachFile” 명령어을 호출한다. custom-plugin의 “getAttachFile” 명령어를 처리하는 부분에서 일시적으로 javascript로 리턴 되는 “PluginResult”을 대기 시켜 놓는다. custom-plugin은 “getAttachFile” 명령을 수행하는 Activity을 “startActivityForResult”로 호출한다. 또한 custom-plugin내에는 “onActivityResult”도 구현한다. “onActivityResult”에서 ‘2번’에서 대기시켰던 PluginResult에 Javascript에 전달할 데이터를 기록한 후에 send 한다.
위의 Flow을 Code로 보면
JavaScript 부분 cordova.exec( function(result) { console.log("Result: "+JSON.stringify(result)); var base64Data = result.base64Data; var name = result.name; var size = result.size; $('#base64Data').html(base64Data); $('#name').html(name);