public final class

JsVirtualMachine

extends Object
java.lang.Object
   ↳ com.tencent.smtt.sdk.JsVirtualMachine

Class Overview

每个 JsVirtualMachine 实例表示一个自足的(self-contained) JavaScript 执行环境。 为避免 JavaScript 虚拟机执行过程中占用当前线程时间过长,一般每个 JsVirtualMachine 会单独创建一个 Java 线程 线程执行所有的 JavaScript 操作, JsVirtualMachine 对象及其关联的 JsContext 对象的所有方法调用均会抛送 到该线程执行,如有返回值,则会阻塞当前线程等待返回结果。 使用者也可以通过 JsVirtualMachine(Context, Looper) 指定 Java 线程的 Looper 构造 JsVirtualMachine 实例,如指定当前线程以减少跨线程操作,或自己创建 Java 线程,以处理一些初始化操作。

Summary

Public Constructors
JsVirtualMachine(Context context)
创建新的 JsVirtualMachine 对象,会新建一个 执行线程 处理所有的 JavaScript 相关操作,可以通过 getLooper() 获取执行线程的 Java 线程 Looper
JsVirtualMachine(Context context, Looper looper)
创建新的 JsVirtualMachine 对象,如果 looper 非空,以 looper 指定的线程作为 执行线程 处理所有的 JavaScript 相关操作,否则,会新建一个 执行线程 处理所有的 JavaScript 相关操作。 使用者可以通过该构造函数覆盖 JavaScript 虚拟机的执行线程或提前做一些初始化的操作:
 
 HandlerThread thread = new HandlerThread("sample");
 thread.start();
 new Handler(thread.getLooper()).post(new Runnable() {
    @Override
     public void run() {
         ....
Public Methods
void destroy()
销毁 JsVirtualMachine。一旦调用了本方法,再使用这个 JsVirtualMachine 或隶属于它的任何对象都是不合法的。
Looper getLooper()
返回 JsVirtualMachine 执行线程的 Looper。 为避免 JavaScript 虚拟机执行过程中占用当前线程时间过长,一般每个 JsVirtualMachine 会单独创建一个 Java 线程 线程执行所有的 JavaScript 操作, JsVirtualMachine 对象及其关联的 JsContext 对象的所有方法调用均会抛送 到该线程执行,如有返回值,则会阻塞当前线程等待返回结果。 使用者也可以通过 JsVirtualMachine(Context, Looper) 指定 Java 线程的 Looper 构造 JsVirtualMachine 实例,如指定当前线程以减少跨线程操作,或自己创建 Java 线程,以处理一些初始化操作。
boolean isFallback()
当前 JsVirtualMachine 是否未启用 X5JsCore 内核,而是用的后备方案。
void onPause()
尽可能地停止 JsVirtualMachine 的处理逻辑。
void onResume()
在先前调用 onPause() 之后恢复 JsVirtualMachine 的处理逻辑。
Protected Methods
IX5JsContext createJsContext()
[Expand]
Inherited Methods
From class java.lang.Object

Public Constructors

public JsVirtualMachine (Context context)

创建新的 JsVirtualMachine 对象,会新建一个 执行线程 处理所有的 JavaScript 相关操作,可以通过 getLooper() 获取执行线程的 Java 线程 Looper

Parameters
context JsVirtualMachine 运行的 context。

public JsVirtualMachine (Context context, Looper looper)

创建新的 JsVirtualMachine 对象,如果 looper 非空,以 looper 指定的线程作为 执行线程 处理所有的 JavaScript 相关操作,否则,会新建一个 执行线程 处理所有的 JavaScript 相关操作。 使用者可以通过该构造函数覆盖 JavaScript 虚拟机的执行线程或提前做一些初始化的操作:

 
 HandlerThread thread = new HandlerThread("sample");
 thread.start();
 new Handler(thread.getLooper()).post(new Runnable() {
    @Override
     public void run() {
         .... // Initialize
 
         JsVirtualMachine vm = new JsVirtualMachine(MainActivity.this, Looper.myLooper());
         JsContext context = new JsContext(vm);
     }
 })
 
 

Parameters
context JsVirtualMachine 运行的 context。
looper JsVirtualMachine 运行的 Java 线程的 Looper,为空则 JsVirtualMachine 自己创建 Java 线程。

Public Methods

public void destroy ()

销毁 JsVirtualMachine。一旦调用了本方法,再使用这个 JsVirtualMachine 或隶属于它的任何对象都是不合法的。

public Looper getLooper ()

返回 JsVirtualMachine 执行线程的 Looper。 为避免 JavaScript 虚拟机执行过程中占用当前线程时间过长,一般每个 JsVirtualMachine 会单独创建一个 Java 线程 线程执行所有的 JavaScript 操作, JsVirtualMachine 对象及其关联的 JsContext 对象的所有方法调用均会抛送 到该线程执行,如有返回值,则会阻塞当前线程等待返回结果。 使用者也可以通过 JsVirtualMachine(Context, Looper) 指定 Java 线程的 Looper 构造 JsVirtualMachine 实例,如指定当前线程以减少跨线程操作,或自己创建 Java 线程,以处理一些初始化操作。

Returns

public boolean isFallback ()

当前 JsVirtualMachine 是否未启用 X5JsCore 内核,而是用的后备方案。

public void onPause ()

尽可能地停止 JsVirtualMachine 的处理逻辑。

public void onResume ()

在先前调用 onPause() 之后恢复 JsVirtualMachine 的处理逻辑。

Protected Methods

protected IX5JsContext createJsContext ()