【发布时间】:2012-03-30 21:32:35
【问题描述】:
我有一个在后台运行的动画,我想在它完成时注册一个回调。该动画不是标准的 java 动画——它是通过 jni 访问的 c 动画(因此假设它只是 Object 类型)。
动画没有要注册的 onFinish 方法,但它确实有一个 isDone() 方法,如果动画不再运行则返回一个布尔值。为了创建回调,我添加了一个可运行对象:
class Foo implements Runnable {
@Override
public void run() {
if (animation == null || target == null) return;
while (!animation.isDone())
{
//loop until animation is done...
}
//execute callback
}
}
这似乎是一种不好的方法 - 只是循环运行直到动画完成。也就是说,我的问题是:有哪些替代或首选方法可以等到 isDone() 返回 true 以执行我的回调?
【问题讨论】:
-
有没有办法在线程中发出 JNI 调用,然后在完成时通知对象? JNI 调用是否在后台执行?
标签: java multithreading syntax callback semantics