From 5db0220ab52c5ce5efcd23e71039ff242575c884 Mon Sep 17 00:00:00 2001 From: FongMi Date: Mon, 17 Jul 2023 11:22:52 +0800 Subject: [PATCH] JS need same thread --- .../java/com/github/catvod/spider/JSDemo.java | 41 ++++++++++++++++--- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/github/catvod/spider/JSDemo.java b/app/src/main/java/com/github/catvod/spider/JSDemo.java index 9832d311..e2b8acda 100644 --- a/app/src/main/java/com/github/catvod/spider/JSDemo.java +++ b/app/src/main/java/com/github/catvod/spider/JSDemo.java @@ -3,23 +3,52 @@ package com.github.catvod.spider; import android.content.Context; import com.github.catvod.crawler.Spider; -import com.github.catvod.crawler.SpiderDebug; +import com.whl.quickjs.android.QuickJSLoader; import com.whl.quickjs.wrapper.QuickJSContext; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + public class JSDemo extends Spider { + private ExecutorService executor; private QuickJSContext ctx; + private void submit(Runnable runnable) { + executor.submit(runnable); + } + + private Future submit(Callable callable) { + return executor.submit(callable); + } + + private void initJS() { + if (ctx != null) return; + ctx = QuickJSContext.create(); + QuickJSLoader.initConsoleLog(ctx); + } + @Override public void init(Context context, String extend) { - ctx = QuickJSContext.create(); - ctx.evaluate("var text = 'Hello QuickJS';"); - String text = ctx.getGlobalObject().getString("text"); - SpiderDebug.log(text); + this.executor = Executors.newSingleThreadExecutor(); + submit(this::initJS); + } + + @Override + public String homeContent(boolean filter) throws Exception { + return submit(() -> { + ctx.evaluate("var text = 'homeContent';"); + return ctx.getGlobalObject().getString("text"); + }).get(); } @Override public void destroy() { - ctx.destroy(); + submit(() -> { + executor.shutdownNow(); + ctx.destroy(); + }); } }