【问题标题】:How to process outstanding UI requests on Android如何在 Android 上处理未完成的 UI 请求
【发布时间】:2016-03-03 21:22:10
【问题描述】:

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

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

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

【问题讨论】:

  • 你有没有想过解决这个问题?

标签: android stetho


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多