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