player2.release();
players.close();
for (String key : hockeyTeam.getKeys()) {
Object value = hockeyTeam.get(key);
Log.e(TAG, “key:” + key + “,value:” + value);
if (key.equals(“players”)){
V8Array array = (V8Array) value;
for (int i = 0; i < array.length(); i++) {
V8Object obj= (V8Object) array.get(i);
Log.e(TAG, “name:” + obj.getString(“name”));
}
}
}
}
- java调用JavaScript函数(一个参数)
/**
-
除了执行脚本外,Java还可使用J2V8调用JavaScript函数。
-
函数可以是全局函数,也可以附加到另一个Object,并且可以选择返回结果。
*/
private void exeJsFunction() {
V8 runtime = V8.createV8Runtime();
runtime.executeVoidScript(“”
-
“var hockeyTeam = {\n”
-
“name : ‘WolfPack’,\n”
-
“players : [],\n”
-
“addPlayer : function(player) {\n”
-
" this.players.push(player);\n"
-
" return this.players.length;\n"
-
“}\n”
-
“}\n”);
V8Object hockeyTeam = runtime.getObject(“hockeyTeam”);
V8Object player1 = new V8Object(runtime).add(“name”, “John”);
V8Object player2 = new V8Object(runtime).add(“name”, “Huang”);
//获取palyers数组
V8Array players = hockeyTeam.getArray(“players”);
players.push(player1).push(player2);
//创建对象为addPlayer方法传值
V8Object player3 = new V8Object(runtime).add(“name”, “Add”);
//注意:将值封装到V8Array中传给addPlayer方法(只有一个参数,因此push一个值)
V8Array push = new V8Array(runtime).push(player3);
int size = hockeyTeam.executeIntegerFunction(“addPlayer”, push);
//JS result size = 3
Log.e(TAG, "JS result size = "+size);
players.close();
player1.close();
player2.close();
player3.close();<