內我正在寫一個應用程序,基本上是圍繞一個250K JNI的包裝阻止對話框。 JNI(遊戲引擎)具有類似handle_penUp(int x,int y)的API。有時它需要從handle_penUp()內部(通過回調到Java代碼)查詢用戶,因此我用來實現查詢的對話框必須被阻止。從JNI代碼
據我瞭解,執行的主線程不能阻止。所以我產生了第二個線程,它使得所有可能導致需要阻塞的回調的JNI調用。在第二個線程中,當我需要建立阻塞對話框時,我調用startActivityForResult(),然後在信號量上獲取()。當onActivityResult()在主線程上被調用時,它調用同一信號量上的release()。
如果我的查詢將作爲一個新的活動來實現,但如果我想將現有的活動範圍內的ShowDialog()這工作。日誌消息告訴我我的線程需要Looper。我添加了一個 - 並會附加信息是否可行 - 但感覺好像我在這裏走錯了路。我需要的是做阻擋對話框配方(有用的,如果僅僅是因爲所有其他平臺擁有他們,因此移植的代碼往往會這樣的。)
可能阻止在攔截與非阻塞IO(電話之前,不會返回它已經獲得了請求的輸入或失敗,與立即返回並報告任何輸入(如果已經在緩衝區中) – 2010-09-24 04:47:03