Native 和JS的通信方式 - xkli/WXSample GitHub Wiki
Native 和 JS目前有两种通信方式
-
Native component和JS component直接进行事件的传递,比如 click,appear等。 实现代码:
WXSDKManager.java /** * * @param instanceId 当前instance 的ID WXSDKInstance.getInstanceId()获取。 * @param ref 当前component的ref WXComponent.getRef() * @param type 当前事件的类型。click,appear等 * @param params 传给component的参数 */ public void fireEvent(final String instanceId, String ref, String type, Map<String, Object> params){ fireEvent(instanceId,ref,type,params,null); }
示例:
mHost.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Map<String, Object> params = new HashMap<>(); int[] location = new int[2]; mHost.getLocationOnScreen(location); params.put("x",location[0]); params.put("y",location[1]); params.put("width",mDomObj.getCSSLayoutWidth()); params.put("height",mDomObj.getCSSLayoutHeight()); WXSDKManager.getInstance().fireEvent(mInstanceId, mDomObj.ref, WXEventType.CLICK, params); } });
-
Native 回调 JS 函数,多用于Module。
/** * @param instanceId 当前instance 的ID WXSDKInstance.getInstanceId()获取。 * @param funcId 需要回调的JS函数,有js端传入 * @param data 需要传给JS的参数 */ public void callback(String instanceId, String funcId, Map<String, Object> data) { mBridgeManager.callback(instanceId, funcId, data); }
调用示例:
public class WXShareModule extends WXModule { @WXModuleAnno public void doShare(String params,String callback) { Map<String,Object> data=new HashMap<>(); data.put("result","success"); WXSDKManager.getInstance().callback(mWXSDKInstance.getInstanceId(), callback, data); } }