2

我正在主 UI 线程中的 Android 上的虚拟机(实际上是 V8)上处理 UI 指令。这工作正常。但是,现在我在混合中添加了一个 JavaScript 调试器(在我的例子中是 Stetho)。我可以在遇到断点时暂停 UI 线程,甚至可以单步执行指令。但是,当指令更改 UI 时,UI 不会立即更新。相反,视图无效,只有当主事件循环继续处理时,更新才会呈现。

所以我的问题是,我可以在不返回主循环的情况下从 UI 线程强制重绘整个设备吗?如果我返回主循环,那么我将破坏整个调用堆栈,并且在调试期间暂停将不再起作用。

我试图获取主 Looper,我什至可以在其上调用 Loop()(理想情况下开始处理事件),但这将成为主循环(并且您不能退出主 Looper)。如果有人对如何模拟主事件循环有任何想法,将不胜感激。

4

1 回答 1

1

这很有趣,我正在和你做同样的事情,在 J2V8 和 Stetho 之间架起一座桥梁。诀窍是在它自己的线程中运行调试器。由于调试器可以直接访问 V8,因此它可以轻松地操作运行时,但转到 Native 代码的命令(如 UI 命令)将在主线程上运行,直到它们返回 V8 运行时。

于 2016-06-16T13:32:47.887 回答