Android:线程同步:等待关闭对话框继续

时间:2012-02-09 16:02:11

标签: android

在一个android项目中,我有一个需要执行序列的函数foo 按顺序操作在foo里面我想调用showDialog来显示一个 对话并等待。然后从showDialog中,当用户点击一个条目时我会 就像通知()foo函数的对话框一样,它可以继续。我不 希望foo继续执行,直到对话框告诉它。到目前为止我有 提出以下因某些原因似乎不起作用的事情:

  class FooActivity {

    synchronized void foo(String param) {

      try {

          showDialog(DIALOG_SELECT_FOO);

          wait();

          doNextThing(param);

        }

      } catch (Exception e) { }

    }

    @Override
    protected Dialog onCreateDialog(int id) {

      switch (id) {

        case DIALOG_SELECT_FOO:

          AlertDialog.Builder builder = new AlertDialog.Builder(this);

          // ...

          builder.setItems(items, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {

              synchronized(FooActivity.this) {

                FooActivity.this.notify();

              }

            }

          });

          return builder.create();

      }

      // should never get here

      return null;

    }

  }

基本上,我根本没有看到对话框。我想这是因为wait()是 在对话框有机会运行之前被调用。该对话框是否在 与调用者相同的线程?有关如何修复此代码的任何想法吗?

谢谢,

John Goche

1 个答案:

答案 0 :(得分:0)

您可以尝试使用handler