Skip to content

Commit 075c9ba

Browse files
authored
Merge pull request taoweiji#2 from taoweiji/develop
add auto gc
2 parents 0c52870 + 3587f15 commit 075c9ba

File tree

20 files changed

+160
-145
lines changed

20 files changed

+160
-145
lines changed

README.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@ quickjs-android 是 QuickJS JavaScript 引擎的 Andoroid 接口框架,实现
99
##### 引入依赖
1010

1111
```groovy
12-
implementation 'io.github.taoweiji.quickjs:quickjs-android:1.0.0'
12+
implementation 'io.github.taoweiji.quickjs:quickjs-android:1.1.2'
1313
```
1414

1515
##### 简单示例
1616

1717
```java
18-
QuickJS quickJS = QuickJS.createV8Runtime();
19-
JSContext jsContext = quickJS.createContext();
20-
int result = jsContext.executeIntegerScript("var a = 2+10;\n a;", "file.js");
21-
jsContext.close();
18+
QuickJS quickJS = QuickJS.createRuntime();
19+
JSContext context = quickJS.createContext();
20+
int result = context.executeIntegerScript("var a = 2+10;\n a;", "file.js");
21+
context.close();
2222
quickJS.close();
2323
```
2424

@@ -31,7 +31,7 @@ quickJS.close();
3131
运行环境,可以创建多个运行时环境,不同的环境之间不能共享对象
3232

3333
```java
34-
QuickJS quickJS = QuickJS.createV8Runtime();
34+
QuickJS quickJS = QuickJS.createRuntime();
3535
```
3636

3737
##### JSContext
@@ -94,17 +94,17 @@ Log.e("QuickJS", String.valueOf(arr.length()));
9494

9595
| 方法 | 说明 |
9696
| -------------------------------- | ---------- |
97-
| static QuickJS createV8Runtime() | 创建运行时 |
97+
| static QuickJS createRuntime() | 创建运行时 |
9898
| JSContext createContext() | 创建上下文 |
99-
| void close() | 销毁运行时 |
99+
| void close() | 销毁引擎 |
100100

101101
#### JSValue
102102

103103
一切JS元素的基类
104104

105105
| 方法 | 说明 |
106106
| -------------------------------- | ---------- |
107-
| void close() | 销毁运行时 |
107+
108108

109109
#### JSObject
110110

example/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ android {
1919

2020
buildTypes {
2121
release {
22-
minifyEnabled false
22+
minifyEnabled true
2323
signingConfig signingConfigs.debug
2424
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
2525
}
2626
debug{
27-
27+
minifyEnabled false
2828
}
2929
}
3030
compileOptions {
Lines changed: 18 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,38 @@
11
package com.quickjs.android.example;
22

3-
import android.os.Build;
43
import android.os.Bundle;
5-
import android.util.Log;
6-
import android.view.View;
74

85
import androidx.appcompat.app.AppCompatActivity;
96

10-
import com.eclipsesource.v8.V8;
11-
import com.eclipsesource.v8.V8Array;
12-
import com.eclipsesource.v8.V8Object;
13-
import com.quickjs.android.JSArray;
14-
import com.quickjs.android.JSContext;
15-
import com.quickjs.android.JSObject;
16-
import com.quickjs.android.QuickJS;
17-
18-
import java.util.Arrays;
7+
import com.quickjs.JSArray;
8+
import com.quickjs.JSContext;
9+
import com.quickjs.JSObject;
10+
import com.quickjs.QuickJS;
1911

2012
public class MainActivity extends AppCompatActivity {
2113

14+
private QuickJS quickJS;
15+
private JSContext jsContext;
16+
2217
@Override
2318
protected void onCreate(Bundle savedInstanceState) {
2419
super.onCreate(savedInstanceState);
20+
quickJS = QuickJS.createRuntime();
21+
jsContext = quickJS.createContext();
22+
jsContext = quickJS.createContext();
2523
test();
2624
}
2725

2826
void test() {
29-
QuickJS quickJS = QuickJS.createRuntime();
30-
JSContext context = quickJS.createContext();
31-
context.executeVoidScript("function test(data){ return data}", "file.js");
32-
JSArray array = new JSArray(context);
33-
array.push(Integer.MAX_VALUE);
34-
int result = context.executeIntegerFunction("test", array);
35-
array.close();
36-
context.close();
37-
quickJS.close();
27+
jsContext.executeVoidScript("function test(data){ return data}", "file.js");
28+
new JSArray(jsContext);
29+
new JSObject(jsContext);
3830
}
3931

40-
void testV8() {
41-
V8 v8 = V8.createV8Runtime();
42-
// v8.executeStringFunction()
43-
// v8.contains();
44-
V8Object jsObject = new V8Object(v8);
45-
jsObject.registerJavaMethod(new com.eclipsesource.v8.JavaVoidCallback() {
46-
47-
@Override
48-
public void invoke(V8Object v8Object, V8Array v8Array) {
49-
// v8Array.getInteger(v8Array.getString())
50-
}
51-
}, "");
52-
// jsObject.executeBooleanFunction();
53-
// v8.executeVoidFunction();
54-
// v8.add()
55-
// v8.add()
56-
// jsObject.add()
57-
// v8.getInteger()
58-
v8.close();
59-
32+
@Override
33+
protected void onDestroy() {
34+
super.onDestroy();
35+
// jsContext.close();
36+
quickJS.close();
6037
}
61-
6238
}

quickjs-android/src/androidTest/java/com/quickjs/android/JSArrayTest.java renamed to quickjs-android/src/androidTest/java/com/quickjs/JSArrayTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
package com.quickjs.android;
1+
package com.quickjs;
2+
3+
import com.quickjs.JSArray;
4+
import com.quickjs.JSContext;
5+
import com.quickjs.JSObject;
6+
import com.quickjs.JSValue;
7+
import com.quickjs.QuickJS;
28

39
import org.junit.After;
410
import org.junit.Before;
@@ -22,7 +28,6 @@ public void setUp() throws Exception {
2228

2329
@After
2430
public void tearDown() throws Exception {
25-
array.close();
2631
context.close();
2732
quickJS.close();
2833
}
@@ -83,8 +88,6 @@ public void getObject() {
8388
Object result = array.getObject(0);
8489
// String result = array.getObject(0).getString("name");
8590
// assertEquals("Wiki", result);
86-
// user.close();
87-
// user.close();
8891
}
8992

9093
@Test
@@ -93,7 +96,6 @@ public void getArray() {
9396
user.push("Wiki");
9497
array.push(user);
9598
assertEquals("Wiki", array.getArray(0).getString(0));
96-
user.close();
9799
}
98100

99101
@Test
@@ -116,8 +118,6 @@ public void test() {
116118
// JSObject value = new JSObject(context);
117119
// value.set("name", "Wiki");
118120
// array.push(value);
119-
// value.close();
120-
// array.close();
121121

122122
JSArray array = new JSArray(context);
123123
JSObject value = new JSObject(context);

quickjs-android/src/androidTest/java/com/quickjs/android/JSContextTest.java renamed to quickjs-android/src/androidTest/java/com/quickjs/JSContextTest.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
package com.quickjs.android;
1+
package com.quickjs;
2+
3+
import com.quickjs.JSArray;
4+
import com.quickjs.JSContext;
5+
import com.quickjs.JSFunction;
6+
import com.quickjs.JSObject;
7+
import com.quickjs.QuickJS;
28

39
import org.junit.After;
410
import org.junit.Before;

quickjs-android/src/androidTest/java/com/quickjs/android/JSFunctionTest.java renamed to quickjs-android/src/androidTest/java/com/quickjs/JSFunctionTest.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
1-
package com.quickjs.android;
1+
package com.quickjs;
2+
3+
import com.quickjs.JSArray;
4+
import com.quickjs.JSContext;
5+
import com.quickjs.JSFunction;
6+
import com.quickjs.JSObject;
7+
import com.quickjs.JSValue;
8+
import com.quickjs.JavaCallback;
9+
import com.quickjs.JavaVoidCallback;
10+
import com.quickjs.QuickJS;
211

312
import org.junit.After;
413
import org.junit.Before;

quickjs-android/src/androidTest/java/com/quickjs/android/JSObjectTest.java renamed to quickjs-android/src/androidTest/java/com/quickjs/JSObjectTest.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1-
package com.quickjs.android;
1+
package com.quickjs;
2+
3+
import com.quickjs.JSArray;
4+
import com.quickjs.JSContext;
5+
import com.quickjs.JSObject;
6+
import com.quickjs.JSValue;
7+
import com.quickjs.JavaCallback;
8+
import com.quickjs.QuickJS;
29

310
import org.junit.After;
411
import org.junit.Before;
@@ -21,7 +28,6 @@ public void setUp() throws Exception {
2128

2229
@After
2330
public void tearDown() throws Throwable {
24-
object.close();
2531
context.close();
2632
quickJS.close();
2733
}
@@ -68,7 +74,6 @@ public void getArray() {
6874
array.push(1);
6975
object.set("key1", array);
7076
assertEquals(1, object.getArray("key1").getInteger(0));
71-
array.close();
7277
}
7378

7479
@Test
@@ -94,7 +99,6 @@ public void executeIntegerFunction() {
9499
JSArray array = new JSArray(context);
95100
array.push(Integer.MAX_VALUE);
96101
int result = context.executeIntegerFunction("test", array);
97-
array.close();
98102
assertEquals(Integer.MAX_VALUE, result);
99103
}
100104

@@ -104,7 +108,6 @@ public void executeDoubleFunction() {
104108
JSArray array = new JSArray(context);
105109
array.push(3.14);
106110
assertEquals(3.14, context.executeDoubleFunction("test", array), 0);
107-
array.close();
108111
}
109112

110113
@Test
@@ -113,7 +116,6 @@ public void executeBooleanFunction() {
113116
JSArray array = new JSArray(context);
114117
array.push(true);
115118
boolean result = context.executeBooleanFunction("test", array);
116-
array.close();
117119
assertTrue(result);
118120
}
119121

@@ -123,7 +125,6 @@ public void executeStringFunction() {
123125
JSArray array = new JSArray(context);
124126
array.push("Hello");
125127
String result = context.executeStringFunction("test", array);
126-
array.close();
127128
assertEquals("Hello", result);
128129
}
129130

@@ -235,7 +236,5 @@ public void test2() {
235236
value.set("name", "Wiki");
236237
array.set("www", value);
237238
array.set("www", JSValue.NULL());
238-
value.close();
239-
array.close();
240239
}
241240
}

quickjs-android/src/androidTest/java/com/quickjs/android/JSValueTest.java renamed to quickjs-android/src/androidTest/java/com/quickjs/JSValueTest.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
package com.quickjs.android;
1+
package com.quickjs;
2+
3+
import com.quickjs.JSArray;
4+
import com.quickjs.JSContext;
5+
import com.quickjs.JSValue;
6+
import com.quickjs.QuickJS;
27

38
import org.junit.After;
49
import org.junit.Before;
@@ -26,12 +31,11 @@ public void tearDown() throws Exception {
2631
public void isUndefined() {
2732
JSArray array = new JSArray(context);
2833
assertTrue(array.getObject(0).isUndefined());
29-
array.close();
3034
}
3135

3236
@Test
33-
public void getJSType() {
34-
assertEquals(JSValue.TYPE.UNDEFINED, JSValue.Undefined(context).getJSType());
37+
public void getType() {
38+
assertEquals(JSValue.TYPE.UNDEFINED, JSValue.Undefined(context).getType());
3539
}
3640

3741
@Test
@@ -43,13 +47,11 @@ public void undefined() {
4347
public void testEquals() {
4448
JSArray array = new JSArray(context);
4549
assertEquals(JSValue.Undefined(context), array.getObject(0));
46-
array.close();
4750
}
4851

4952
@Test
5053
public void testHashCode() {
5154
JSArray array = new JSArray(context);
5255
assertEquals(JSValue.Undefined(context).hashCode(), array.getObject(0).hashCode());
53-
array.close();
5456
}
5557
}

quickjs-android/src/androidTest/java/com/quickjs/android/QuickJSTest.java renamed to quickjs-android/src/androidTest/java/com/quickjs/QuickJSTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
package com.quickjs.android;
1+
package com.quickjs;
22

3-
import org.junit.Test;
3+
import com.quickjs.JSContext;
4+
import com.quickjs.QuickJS;
45

5-
import static org.junit.Assert.*;
6+
import org.junit.Test;
67

78
public class QuickJSTest {
89

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
package="com.quickjs.android">
3+
package="com.quickjs">
44

55
</manifest>

0 commit comments

Comments
 (0)