20. 2. asynchronous function in Java
<script>
var start = new Date().getTime();
setInterval(function() {
document.getElementById(‘tTest’).innerHTML+=(new Date().getTime()-start)+“msec<br/>”;
}, 1000);
function changeText() {
document.getElementById(‘tTest’).innerHTML += “call MyHybrid.hang()<br/>”;
MyHybrid.hang(5);
document.getElementById(‘tTest’).innerHTML += “hang 5secs<br/>”;
}
</script>
<body>
<div id=‘tTest’></div>
<input type=‘button’ onclick=‘changeText()’ value=‘Change Text’/>
</body>
class MyHybrid {
public void hang(int time) {
try {
Thread.sleep(time*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
21. 2. asynchronous function in Java
<script>
var start = new Date().getTime();
setInterval(function() {
document.getElementById(‘tTest’).innerHTML+=(new Date().getTime()-start)+“msec<br/>”;
}, 1000);
function changeText() {
document.getElementById(‘tTest’).innerHTML += “call MyHybrid.hang()<br/>”;
MyHybrid.hang(5);
document.getElementById(‘tTest’).innerHTML += “hang 5secs<br/>”;
}
</script>
<body>
<div id=‘tTest’></div>
<input type=‘button’ onclick=‘changeText()’ value=‘Change Text’/>
</body>
class MyHybrid {
public void hang(int time) {
try {
Thread.sleep(time*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
22. 2. asynchronous function in Java
<script>
var start = new Date().getTime();
setInterval(function() {
document.getElementById(‘tTest’).innerHTML+=(new Date().getTime()-start)+“msec<br/>”;
}, 1000);
function changeText() {
document.getElementById(‘tTest’).innerHTML += “call MyHybrid.asyncJob()<br/>”;
MyHybrid.asyncJob(5);
document.getElementById(‘tTest’).innerHTML += “hang 5secs<br/>”;
}
</script>
<body>
<div id=‘tTest’></div>
<input type=‘button’ onclick=‘changeText()’ value=‘Change Text’/>
</body>
class MyHybrid {
public void asyncJob(final int time) {
Thread thread = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(time*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.start();
}
}
23. 2. asynchronous function in Java
<script>
var start = new Date().getTime();
setInterval(function() {
document.getElementById(‘tTest’).innerHTML+=(new Date().getTime()-start)+“msec<br/>”;
}, 1000);
function changeText() {
document.getElementById(‘tTest’).innerHTML += “call MyHybrid.asyncJob()<br/>”;
MyHybrid.asyncJob(5);
document.getElementById(‘tTest’).innerHTML += “hang 5secs<br/>”;
}
</script>
<body>
<div id=‘tTest’></div>
<input type=‘button’ onclick=‘changeText()’ value=‘Change Text’/>
</body>
class MyHybrid {
public void asyncJob(final int time) {
Thread thread = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(time*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.start();
}
}
24. 3. return value & callback function
• When functions are changed asynchronously, how to
return results to the caller exactly?
25. 3. return value & callback function
<script>
var start = new Date().getTime();
setInterval(function() {
document.getElementById(‘tTest’).innerHTML+=(new Date().getTime()-start)+“msec<br/>”;
}, 1000);
function changeText() {
document.getElementById(‘tTest’).innerHTML += “call MyHybrid.asyncJob()<br/>”;
MyHybrid.asyncJob(5);
document.getElementById(‘tTest’).innerHTML += “hang 5secs<br/>”;
}
</script>
<body>
<div id=‘tTest’></div>
<input type=‘button’ onclick=‘changeText()’ value=‘Change Text’/>
</body>
class MyHybrid {
public void asyncJob(final int time) {
Thread thread = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(time*1000);
// how to return results?
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.start();
}
}
26. 3. return value & callback function
<script>
var start = new Date().getTime();
setInterval(function() {
document.getElementById(‘tTest’).innerHTML+=(new Date().getTime()-start)+“msec<br/>”;
}, 1000);
function changeText() {
document.getElementById(‘tTest’).innerHTML += “call MyHybrid.asyncJob()<br/>”;
MyHybrid.asyncJob(5);
document.getElementById(‘tTest’).innerHTML += “hang 5secs<br/>”;
}
</script>
<body>
<div id=‘tTest’></div>
<input type=‘button’ onclick=‘changeText()’ value=‘Change Text’/>
</body>
class MyHybrid {
public void asyncJob(final int time) {
Thread thread = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(time*1000);
// how to return results?
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.start();
}
}
27. 3. return value & callback function
<script>
var start = new Date().getTime();
setInterval(function() {
document.getElementById(‘tTest’).innerHTML+=(new Date().getTime()-start)+“msec<br/>”;
}, 1000);
function changeText() {
document.getElementById(‘tTest’).innerHTML += “call MyHybrid.asyncJob()<br/>”;
MyHybrid.asyncJob(5);
document.getElementById(‘tTest’).innerHTML += “hang 5secs<br/>”;
}
</script>
<body>
<div id=‘tTest’></div>
<input type=‘button’ onclick=‘changeText()’ value=‘Change Text’/>
</body>
class MyHybrid {
public void asyncJob(final int time) {
Thread thread = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(time*1000);
mWebView.loadUrl(“javascript:document.getElementById(‘tTest’).innerHTML +=
”finish asyncJob()<br/>””);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.start();
}
28. 3. return value & callback function
<script>
var start = new Date().getTime();
setInterval(function() {
document.getElementById(‘tTest’).innerHTML+=(new Date().getTime()-start)+“msec<br/>”;
}, 1000);
function changeText() {
document.getElementById(‘tTest’).innerHTML += “call MyHybrid.asyncJob()<br/>”;
MyHybrid.asyncJob(5);
document.getElementById(‘tTest’).innerHTML += “hang 5secs<br/>”;
}
</script>
<body>
<div id=‘tTest’></div>
<input type=‘button’ onclick=‘changeText()’ value=‘Change Text’/>
</body>
class MyHybrid {
public void asyncJob(final int time) {
Thread thread = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(time*1000);
mWebView.loadUrl(“javascript:document.getElementById(‘tTest’).innerHTML +=
”finish asyncJob()<br/>””);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.start();
}
29. 3. return value & callback function
<script>
var start = new Date().getTime();
setInterval(function() {
document.getElementById(‘tTest’).innerHTML+=(new Date().getTime()-start)+“msec<br/>”;
}, 1000);
function changeText() {
document.getElementById(‘tTest’).innerHTML += “call MyHybrid.aFuncJob()<br/>”;
MyHybrid.aFuncJob(asyncFunction.toString().match(/^s*functions+([^s(]+)/)[1], 5);
document.getElementById(‘tTest’).innerHTML += “aFuncJob 5secs<br/>”;
}
function asyncFunction(str) {
document.getElementById(‘tTest’).innerHTML += “asyncFunction:” + str + “<br/>”;
}
</script>
<body>
class MyHybrid {
public String aFuncJob(final String strFunc, final int time) {
Thread thread = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(time*1000);
mWebView.loadUrl(“javascript:” + strFunc + “(”finish aFuncJob()<br/>”)”);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.start();
}
}
30. 3. return value & callback function
<script>
var start = new Date().getTime();
setInterval(function() {
document.getElementById(‘tTest’).innerHTML+=(new Date().getTime()-start)+“msec<br/>”;
}, 1000);
function changeText() {
document.getElementById(‘tTest’).innerHTML += “call MyHybrid.aFuncJob()<br/>”;
MyHybrid.aFuncJob(asyncFunction.toString().match(/^s*functions+([^s(]+)/)[1], 5);
document.getElementById(‘tTest’).innerHTML += “aFuncJob 5secs<br/>”;
}
function asyncFunction(str) {
document.getElementById(‘tTest’).innerHTML += “asyncFunction:” + str + “<br/>”;
}
</script>
<body>
class MyHybrid {
public String aFuncJob(final String strFunc, final int time) {
Thread thread = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(time*1000);
mWebView.loadUrl(“javascript:” + strFunc + “(”finish aFuncJob()<br/>”)”);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.start();
}
}
31. 4. anonymous callback function
• We use anonymous callback functions in JavaScript,
normally.
setInterval(function() {
alert(“hello”);
}, 1000);
• Let’s make it possible!
32. 4. anonymous callback function
<script>
function changeText() {
var str = MyHybrid.setFunction( func1.toString() ) + “<br/>”;
str += MyHybrid.setFunction((function func2() {var value2=0;}).toString()) + “<br/>”;
str += MyHybrid.setFunction((function() {var value3=0;}).toString()) + “<br/>”;
document.getElementById(‘paramTest’).innerHTML = str;
}
function func1() {
var value1=0;
}
</script>
<body>
<div id=‘paramTest’></div>
</body>
class MyHybrid {
public String setFunction(String data) {
return “setFunction:” + data;
}
}
33. 4. anonymous callback function
<script>
function changeText() {
var str = MyHybrid.setFunction( func1.toString() ) + “<br/>”;
str += MyHybrid.setFunction((function func2() {var value2=0;}).toString()) + “<br/>”;
str += MyHybrid.setFunction((function() {var value3=0;}).toString()) + “<br/>”;
document.getElementById(‘paramTest’).innerHTML = str;
}
function func1() {
var value1=0;
}
</script>
<body>
<div id=‘paramTest’></div>
</body>
class MyHybrid {
public String setFunction(String data) {
return “setFunction:” + data;
}
}