2016-03-03 52 views
2

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

所以我的问题是,我可以强制从UI线程重绘整个设备而不返回到主循环?如果我返回到主循环,那么我将吹掉我的整个调用堆栈,并且在调试过程中暂停将不再工作。我试图获得主要的Looper,我甚至可以调用Loop()(理想的是开始处理事件),但是这会成为主循环(并且你不能退出主循环)。如果任何人有任何想法如何模拟主要事件循环,那将不胜感激。

+0

你有没有想出这个解决方案? –

回答

1

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