Java新手在这里。我正在使用第三方库,它给了我一个函数,比如说F(),它的输出决定了我的逻辑。所以我需要在我的代码中进一步处理它的结果。等待线程完成执行
问题是F()做了一些I/O,因此产生了一个线程来完成这个功能。他们给了我几个回调来实现哪些被调用来从线程返回状态/值。这很好,除了函数F()立即返回并且我的代码的其余部分继续运行。我不希望这样,因为我必须根据F()的结果分配一些对象,所以我真的想等F()真正完成。
这应该是人们经常碰到的问题。处理这个问题的正确方法是什么?这是我的设计或第三方库中的问题吗?或者我不是很了解图书馆?
为了完整起见,我正在开发一个android应用程序,该库是facebook sdk。该函数是单点登录函数authorize()。虽然这是一个足够普遍的问题,我认为最好在Java论坛中解决。
感谢您的任何帮助。 - P
正是我的问题!你明白了! FB sdk提供了一个wait()方法,但是如果我在主线程中调用它,它不会解决问题,因为它只会冻结屏幕。这个回调是什么?我将不得不检查。你能提供一个链接吗?问题是我的视图是根据登录操作的结果绘制的。 – user220201 2011-04-25 14:59:33
看看我的答案。 – 2011-04-25 15:17:55
感谢您的回答。在这种情况下,b.aMethod()的行为是什么?它会等待回调吗?由于aMethod()本质上是创建一个线程并在该线程中执行有趣的部分。在我的情况下,funct F()采用DialogListener而不是构造函数。所以我通过它,但F()立即返回,并在一个点后调用回调。但在继续执行其他逻辑之前,确实想等待回调被调用。 – user220201 2011-04-25 16:08:46