我通过J2V8在我的Android项目中嵌入了v8。这很好用,但有些情况下脚本会挂起(可能是由于我想的某种无限循环)。代码太复杂了,无法调试它,并且总会出现脚本运行疯狂的情况。
为了确保不会留下一些僵尸线并且耗尽电池,我想定义超时并在脚本尚未返回时终止v8。当然,我在AsyncTask
或IntentService
执行脚本,而不是在主线程中执行。这样Android就无法保护自己显示“应用程序无响应”#34; (ANR)。后台线程运行并运行并运行...
如何以干净的方式杀死v8?
答案 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);
}