我正在尝试使用 Jetpack JavaScriptSandbox 库异步运行 js 代码,并且它的文档说要运行
JavaScriptSandbox.createConnectedInstanceAsync(context).get()
。
第一部分返回一个 ListenableFuture<JavaScriptSandbox>
,通过 .get()
部分您可以获得实际的 JavaScriptSandbox 连接。现在,由于某种原因,.get()
部分在我的设备上永远被阻止。
我还需要寻找什么额外的东西吗?
提前致谢!
使 UI 线程等待 Future 得到解析,而解析应该在 UI 线程上进行。get()
您可以尝试在后台线程上调用 get() 或使用 Future 类提供的异步 API。
https://issuetracker.google.com/issues/290254837#comment4
可以暂时使用回调。
ListenableFuture<JavaScriptSandbox> jsSandboxFuture =
JavaScriptSandbox.createConnectedInstanceAsync(context);
Futures.addCallback(jsSandboxFuture, new FutureCallback<>() {
@Override
public void onSuccess(@Nullable JavaScriptSandbox jsSandbox) {
sandbox = new WeakReference<>(jsSandbox);
}
@Override
public void onFailure(@NonNull Throwable throwable) {
// ...
}
}, MoreExecutors.directExecutor());
在 init 方法中使用它。并在其他部分使用
realSandBox.createIsolate();
。