我可以在J2V8中杀死JavaScript执行吗?

时间:2016-07-18 18:18:11

标签: android v8 embedded-v8 j2v8

我通过J2V8在我的Android项目中嵌入了v8。这很好用,但有些情况下脚本会挂起(可能是由于我想的某种无限循环)。代码太复杂了,无法调试它,并且总会出现脚本运行疯狂的情况。

为了确保不会留下一些僵尸线并且耗尽电池,我想定义超时并在脚本尚未返回时终止v8。当然,我在AsyncTaskIntentService执行脚本,而不是在主线程中执行。这样Android就无法保护自己显示“应用程序无响应”#34; (ANR)。后台线程运行并运行并运行...

如何以干净的方式杀死v8?

1 个答案:

答案 0 :(得分:1)

我在V8对象上忽略了这个方法:

/**
 * Terminates any JavaScript executing on this runtime. Once
 * the runtime is released, any executors that were spawned
 * will also be force terminated.
 */
public void terminateExecution() {
    forceTerminateExecutors = true;
    terminateExecution(v8RuntimePtr);
}