相关疑难解决方法(0)

WebView 何时准备好用于快照()?

JavaFX的文档状态,一个WebView当准备Worker.State.SUCCEEDED达到但是,除非你稍等片刻(即AnimationTransitionPauseTransition等等),一个空白页面的呈现方式。

这表明 WebView 内部发生了一个事件,准备捕获它,但它是什么?

GitHub 上SwingFXUtils.fromFXImage7,000 多个代码片段使用,但其中大多数似乎与 无关WebView,是交互式的(人类掩盖了竞争条件)或使用了任意转换(从 100 毫秒到 2,000 毫秒的任何时间)。

我试过了:

  • changed(...)WebView的维度内监听(高度和宽度属性DoubleProperty实现ObservableValue,可以监控这些东西)

    • 不可行。有时,该值似乎与绘制例程分开更改,导致部分内容。
  • runLater(...)在 FX 应用程序线程上盲目地讲述任何事情。

    • 许多技术都使用它,但我自己的单元测试(以及来自其他开发人员的一些很好的反馈)解释说事件通常已经在正确的线程上,并且这个调用是多余的。我能想到的最好的方法是通过排队来增加足够的延迟,它对某些人有效。
  • 将 DOM 侦听器/触发器或 JavaScript 侦听器/触发器添加到 WebView

    • SUCCEEDED尽管捕获了空白,但在调用时 JavaScript 和 DOM 似乎都已正确加载。DOM/JavaScript 侦听器似乎没有帮助。
  • 使用AnimationorTransition有效地“睡眠”而不阻塞主 FX 线程。

    • ?? 这种方法有效,如果延迟足够长,可以产生高达 100% 的单元测试,但过渡时间似乎是我们只是猜测和糟糕设计的未来时刻。对于高性能或关键任务应用程序,这迫使程序员在速度或可靠性之间做出权衡,这对用户来说都是一种潜在的糟糕体验。

什么时候打电话合适WebView.snapshot(...)

用法:

SnapshotRaceCondition.initialize();
BufferedImage bufferedImage = …
Run Code Online (Sandbox Code Playgroud)

java multithreading javafx race-condition

9
推荐指数
1
解决办法
347
查看次数

标签 统计

java ×1

javafx ×1

multithreading ×1

race-condition ×1