1
@Override
protected void onAnimationEnd() {
    super.onAnimationEnd();
}

视图的这种被覆盖的方法可以触发,但是我怎样才能从这个方法中触发 UI 方法呢?

提前致谢。

4

2 回答 2

1

你想在 UI 线程上运行一些东西吗?您可以在 中调用该runOnUiThread方法Activity,并通过Runnable它传递,这将在 Ui 线程上执行代码。

  runOnUiThread(new Runnable() {

    @Override
    public void run() {
       // Do something on the UI Thread
    }
  });

您必须记住,这runOnUiThread会将代码切换到 Ui 线程,因此请确保在切换后不再执行任何操作。您还必须记住您正在切换线程,因此您不能保证runOnUiThread方法内的代码将在您调用它之后的任何内容之前运行。

因此,在您的示例中,您将使用:

@Override
protected void onAnimationEnd() {
    super.onAnimationEnd();
    runOnUiThread(new Runnable() {

        @Override
        public void run() {
           // Do something on the UI Thread
        }
    });
    // continue with non-UI Thread stuff
}
于 2012-10-24T11:03:11.897 回答
0

好吧,这就是我的做法:

@Override
protected void onAnimationEnd() {
    super.onAnimationEnd();
    MainActivity.handler.sendEmptyMessage(0);
}

我在 MainActivity 中有一个静态处理程序对象,用于查找传入消息。仅此而已,但我想知道是否有更好的方法?

于 2012-10-24T11:14:05.870 回答