很简单。例子:
// your proxy.java:
@Kroll.method
public void create_marker(Map options){
Log.i(LCAT, "== in create_marker, options: " + options.toString() );
}
然后,我们就可以调用了:
// in app.js
proxy = require('your.module').createYourProxy();
proxy.create_marker({
name: 'my marker'
});
需要注意的是,这里有个 调用方法的顺序:
1. create Proxy 构建函数
2. 调用各种普通方法
3. 调用 createView 方法
所以,可以看到,调用 createView()方法是放到了普通方法的后面。 如果普通方法的一些变量需要在 createView 中初始化的话,就一定要先保证该变量是初始化过的,或者,让普通方法延迟几秒执行(setTimeout )
[INFO] TiRootActivity: (main) [0,0] checkpoint, on root activity resume. activity = com.test.tuju.Test_appActivity@26594716
[DEBUG] OpenGLRenderer: Render dirty regions requested: true
[DEBUG] Atlas: Validating map...
[INFO] Timeline: Timeline: Activity_launch_request id:com.test.tuju time:9074122
[INFO] MapProxy: (KrollRuntimeThread) [73,73] == in MapProxy(), com.gaodemap.MapProxy@26653367
[INFO] ======== , 建立了proxy, 放到了win中
[INFO] MapProxy: (main) [146,219] == in createView
[INFO] MapProxy: (main) [167,386] == in onCreate in proxy
[INFO] == 开始新建 marker, 看是不是延迟了3秒执行
[INFO] MapProxy: (KrollRuntimeThread) [2708,3094] == in create_marker, options: {latitude=39.9, longitude=116.47, title=我是第一个title}
下面是完整的调用方法代码
// Proxy.java
76 // Constructor
77 public MapProxy()
78 {
79 super();
80 Log.i(LCAT, "== in MapProxy(), " + this );
81 }
82
83 @Override
84 public TiUIView createView(Activity activity)
85 {
86 Log.i(LCAT, "== in createView");
// in app.js:
var the_module = require('com.gaodemap');
var proxy = the_module.createMap( {
borderColor: 'green',
});
win.add(proxy);
console.info("======== , 建立了proxy, 放到了win中");
// 等proxy的createView 方法执行完之后, 3秒钟之后才开始加各种 marker
setTimeout(function(){
console.info("== 开始新建 marker, 看是不是延迟了3秒执行");
proxy.create_marker({
latitude: "39.9",
longitude: "116.47",
title: "我是第一个title"
})
}, 3000)