我可以在 J2V8 中终止 JavaScript 执行吗?
Can I kill JavaScript execution in J2V8?
我通过 J2V8 在我的 Android 项目中嵌入了 v8。这很好用,但有些情况下脚本会挂起(我想可能是由于某种无限循环)。代码太复杂而无法调试,并且总是会出现脚本 运行 疯狂的情况。
为了确保不会有一些僵尸线程挂在周围并耗尽电池电量,我想定义一个超时并在脚本尚未返回时终止 v8。当然,我在 AsyncTask
或 IntentService
中执行脚本,而不是在主线程中执行。这样 Android 不会保护自己显示 "Application Not Responding" (ANR)。后台线程运行运行运行...
如何干净利落地杀死v8?
我在 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);
}
我通过 J2V8 在我的 Android 项目中嵌入了 v8。这很好用,但有些情况下脚本会挂起(我想可能是由于某种无限循环)。代码太复杂而无法调试,并且总是会出现脚本 运行 疯狂的情况。
为了确保不会有一些僵尸线程挂在周围并耗尽电池电量,我想定义一个超时并在脚本尚未返回时终止 v8。当然,我在 AsyncTask
或 IntentService
中执行脚本,而不是在主线程中执行。这样 Android 不会保护自己显示 "Application Not Responding" (ANR)。后台线程运行运行运行...
如何干净利落地杀死v8?
我在 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);
}