java.lang.Object | |
↳ | com.tencent.smtt.sdk.JsVirtualMachine |
每个 JsVirtualMachine
实例表示一个自足的(self-contained) JavaScript 执行环境。
为避免 JavaScript 虚拟机执行过程中占用当前线程时间过长,一般每个 JsVirtualMachine
会单独创建一个 Java
线程 线程执行所有的 JavaScript 操作, JsVirtualMachine
对象及其关联的 JsContext
对象的所有方法调用均会抛送 到该线程执行,如有返回值,则会阻塞当前线程等待返回结果。
使用者也可以通过 JsVirtualMachine(Context, Looper)
指定 Java
线程的 Looper
构造 JsVirtualMachine
实例,如指定当前线程以减少跨线程操作,或自己创建 Java
线程,以处理一些初始化操作。
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
JsVirtualMachine(Context context) | |||||||||||
JsVirtualMachine(Context context, Looper looper)
创建新的
JsVirtualMachine 对象,如果 looper 非空,以 looper
指定的线程作为 执行线程 处理所有的 JavaScript 相关操作,否则,会新建一个 执行线程 处理所有的
JavaScript 相关操作。
使用者可以通过该构造函数覆盖 JavaScript 虚拟机的执行线程或提前做一些初始化的操作:
|
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
|
创建新的 JsVirtualMachine
对象,会新建一个 执行线程 处理所有的 JavaScript
相关操作,可以通过 getLooper()
获取执行线程的 Java 线程
Looper
。
context | JsVirtualMachine 运行的 context。
|
---|
创建新的 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);
}
})
context | JsVirtualMachine 运行的 context。 |
---|---|
looper | JsVirtualMachine 运行的 Java 线程的 Looper,为空则
JsVirtualMachine 自己创建 Java 线程。
|
返回 JsVirtualMachine
执行线程的 Looper。
为避免 JavaScript 虚拟机执行过程中占用当前线程时间过长,一般每个 JsVirtualMachine
会单独创建一个
Java 线程 线程执行所有的 JavaScript 操作, JsVirtualMachine
对象及其关联的
JsContext
对象的所有方法调用均会抛送 到该线程执行,如有返回值,则会阻塞当前线程等待返回结果。
使用者也可以通过 JsVirtualMachine(Context, Looper)
指定
Java 线程的 Looper
构造 JsVirtualMachine
实例,如指定当前线程以减少跨线程操作,或自己创建 Java 线程,以处理一些初始化操作。
JsVirtualMachine
运行的 Java 线程的 Looper。