Android Native와 Mobile Web 사이 API 정의 후 통신 할때,
Native 반환 메서드명을 시간값과 랜덤 함수를 이용하여 임의로 생성되도록 하고, Map과 같은 형태로 저장하여,
async로 호출하도록 한다.
//** 1. 반환 시 실제 동작할 함수 정의
var project=
{
//** Start Responder
Responder :
{
//** 1-1. Start successRequestList:: 리스트 반환 성공
successRequestList : function(param) {
alert("반환 ======== successRequestList " + param);
jsParingResponseList(param);
}, //** End successRequestList :: 리스트 반환 성공 v1
......................
}
//** Native 함수 호출 요청
function requestList(param) {
var reqData = jsStringIntoJsonObject(param);
// 성공시 반환 파라미터
reqData.success=jsMakeCalbackFunctionName(project.Responder["successRequestList"]);
window.project.requestlist(reqData ); //** Native 함수 호출
}
var preFunctionName = "callback_";
//** 반환 함수 임의 생성
function jsMakeCalbackFunctionName(func) {
var nowTime = jsGetMilisTime();
var functionName = preFunctionName + (Math.floor(Math.random() * nowTime));
project.Responder.callbacks[functionName] = func;
return 'project.Responder.callbacks["'+functionName+'"]';
}
function jsGetMilisTime(){
var gift=new Date();
return gift.getTime();
}
alert("반환 ======== successRequestList " + param);
jsParingResponseList(param);
} //** End successRequestList :: 리스트 반환 성공 v1
............. (서로 다른 이름으로 같은 함수가 정의 될 수 있음)
Native 호출 없이 테스트 삼아
project.Responder.callbacks Object 에서 key값들을 읽어와서 해당 함수를 다음과 같이 실행해 볼 수 있다.
$(document.ready(function(){
var arrCallbacks = Object.keys(project.Responder.callbacks);
for(var i=0; i< arrCallbacks.length; i++){
alert(arrCallbacks[i]);
project.Responder.callbacks[arrCallbacks[i]](thisItem);
}
}
'Dev > Orvercome 3sec memory' 카테고리의 다른 글
rich:fileUpload - The default file upload location on JBoss server (1) | 2015.07.17 |
---|---|
Eclipse "Remote Debugging" Setting with JBoss Portal, Fuse (0) | 2015.03.10 |
Server to Server Http 요청 내용을 Fiddler에서 관찰하기 위한 설정 (0) | 2013.06.11 |
생각하지 못 했던, 자바스크립트 호출이 안 된 이유 (0) | 2013.04.15 |
MySQL의 BETWEEN 조건절 결과 데이터 범위 (0) | 2013.03.07 |