add context.bridge
This commit is contained in:
parent
16732340c7
commit
ef5bb17380
@ -6,6 +6,7 @@ import com.github.penfeizhou.doric.DoricContext;
|
|||||||
import com.github.penfeizhou.doric.extension.bridge.DoricMethod;
|
import com.github.penfeizhou.doric.extension.bridge.DoricMethod;
|
||||||
import com.github.penfeizhou.doric.extension.bridge.DoricPlugin;
|
import com.github.penfeizhou.doric.extension.bridge.DoricPlugin;
|
||||||
import com.github.penfeizhou.doric.plugin.DoricJavaPlugin;
|
import com.github.penfeizhou.doric.plugin.DoricJavaPlugin;
|
||||||
|
import com.github.penfeizhou.doric.utils.ThreadMode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: com.github.penfeizhou.doricdemo
|
* @Description: com.github.penfeizhou.doricdemo
|
||||||
@ -18,8 +19,13 @@ public class DemoPlugin extends DoricJavaPlugin {
|
|||||||
super(doricContext);
|
super(doricContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DoricMethod
|
@DoricMethod(thread = ThreadMode.UI)
|
||||||
public void test() {
|
public void test() {
|
||||||
Toast.makeText(getDoricContext().getContext(), "test", Toast.LENGTH_SHORT).show();
|
Toast.makeText(getDoricContext().getContext(), "test", Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DoricMethod(thread = ThreadMode.UI)
|
||||||
|
public void testPromise() {
|
||||||
|
Toast.makeText(getDoricContext().getContext(), "test", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package com.github.penfeizhou.doricdemo;
|
|||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
|
|
||||||
import com.github.penfeizhou.doric.Doric;
|
import com.github.penfeizhou.doric.Doric;
|
||||||
|
import com.github.penfeizhou.doric.DoricRegistry;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: Doric
|
* @Description: Doric
|
||||||
@ -14,5 +15,6 @@ public class MyApplication extends Application {
|
|||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
Doric.init(this);
|
Doric.init(this);
|
||||||
|
DoricRegistry.register(new DemoLibrary());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ public class DoricJSEngine implements Handler.Callback, DoricTimerExtension.Time
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
mTimerExtension = new DoricTimerExtension(looper, this);
|
mTimerExtension = new DoricTimerExtension(looper, this);
|
||||||
mDoricBridgeExtension = new DoricBridgeExtension();
|
mDoricBridgeExtension = new DoricBridgeExtension(mDoricRegistry);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Handler getJSHandler() {
|
public Handler getJSHandler() {
|
||||||
@ -174,17 +174,6 @@ public class DoricJSEngine implements Handler.Callback, DoricTimerExtension.Time
|
|||||||
return String.format(DoricConstant.TEMPLATE_MODULE, moduleName, content);
|
return String.format(DoricConstant.TEMPLATE_MODULE, moduleName, content);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSDecoder invokeContextEntityMethod(final String contextId, final String method, final Object... args) {
|
|
||||||
final Object[] nArgs = new Object[args.length + 2];
|
|
||||||
nArgs[0] = contextId;
|
|
||||||
nArgs[1] = method;
|
|
||||||
if (args.length > 0) {
|
|
||||||
System.arraycopy(args, 0, nArgs, 2, args.length);
|
|
||||||
}
|
|
||||||
return invokeDoricMethod(DoricConstant.DORIC_CONTEXT_INVOKE, nArgs);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public JSDecoder invokeDoricMethod(final String method, final Object... args) {
|
public JSDecoder invokeDoricMethod(final String method, final Object... args) {
|
||||||
ArrayList<JavaValue> values = new ArrayList<>();
|
ArrayList<JavaValue> values = new ArrayList<>();
|
||||||
for (Object arg : args) {
|
for (Object arg : args) {
|
||||||
@ -196,6 +185,11 @@ public class DoricJSEngine implements Handler.Callback, DoricTimerExtension.Time
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void callback(long timerId) {
|
public void callback(long timerId) {
|
||||||
|
try {
|
||||||
invokeDoricMethod(DoricConstant.DORIC_TIMER_CALLBACK, timerId);
|
invokeDoricMethod(DoricConstant.DORIC_TIMER_CALLBACK, timerId);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
DoricLog.e("Timer Callback error:%s", e.getLocalizedMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ log('console', Object.getOwnPropertyNames(console))
|
|||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
log('exec setTimeout')
|
log('exec setTimeout')
|
||||||
context.callNative("modal", "toast", "Hello,Doric!")
|
// context.callNative("modal", "toast", "Hello,Doric!")
|
||||||
}, 1000)
|
}, 1000)
|
||||||
const timerId = setInterval(() => {
|
const timerId = setInterval(() => {
|
||||||
log('exec setInterval')
|
log('exec setInterval')
|
||||||
@ -39,5 +39,8 @@ export class MyPage extends Panel {
|
|||||||
log("Hello.HEGO")
|
log("Hello.HEGO")
|
||||||
logw("Hello.HEGO")
|
logw("Hello.HEGO")
|
||||||
loge("Hello.HEGO")
|
loge("Hello.HEGO")
|
||||||
|
setTimeout(() => {
|
||||||
|
context.bridge.demo_test()
|
||||||
|
}, 1000)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -71,8 +71,22 @@ export class Context {
|
|||||||
entity: any
|
entity: any
|
||||||
id: string
|
id: string
|
||||||
callbacks: Map<string, { resolve: Function, reject: Function }> = new Map
|
callbacks: Map<string, { resolve: Function, reject: Function }> = new Map
|
||||||
|
bridge: { [index: string]: (args?: any) => Promise<any> }
|
||||||
|
|
||||||
constructor(id: string) {
|
constructor(id: string) {
|
||||||
this.id = id
|
this.id = id
|
||||||
|
this.bridge = new Proxy({}, {
|
||||||
|
get: (target, p: any) => {
|
||||||
|
if (typeof p === 'string') {
|
||||||
|
return (args?: any) => {
|
||||||
|
const array = p.split('_')
|
||||||
|
return this.callNative(array[0], array[1], args)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return Reflect.get(target, p)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
callNative(namespace: string, method: string, args?: any): Promise<any> {
|
callNative(namespace: string, method: string, args?: any): Promise<any> {
|
||||||
const callbackId = uniqueId('callback')
|
const callbackId = uniqueId('callback')
|
||||||
|
Reference in New Issue
Block a user