2017-01-03 87 views
1

我已經啓動了線程,在那個線程中我試圖連接到服務器,收到響應後,我必須用事件監聽器更新UI(通過Interface實現)。這裏在收到響應後,我需要顯示彈出對話框,一旦用戶單擊確定,需要繼續線程並完成其他進程。如何暫停線程一段時間,然後在用戶交互後顯示UI,繼續線程執行

class ConnectionThread extends Thread { 
     ConnectionThread() { 
      this.setName("ConnectionThread"); 
     } 

     @Override 
     public void run() { 
     // Need to pause the thread for sometime, Need to do the functionality here. 
    ((Activity)mContext).runOnUiThread(new Runnable() { 
       public void run() { 
      // custom dialog 
       showAlertDialog(); 
       // start the thread functionality again from that position. 
} 
}); 

}

我曾嘗試用wait()的概念,也加入,如預期這是沒有幫助。任何幫助讚賞。

+0

要處理這樣的事情,你可能會考慮延長的AsyncTask。 https://developer.android.com/reference/android/os/AsyncTask.html 這比僅使用Thread類稍微靈活一些。 –

+0

元素的不尋常的相互作用。你確定它必須以這種方式發生嗎?爲什麼不啓動加載程序,即填充用戶的第一個選擇。那麼,一旦他們點擊,它可以啓動另一個裝載機?用戶在對話框中選擇/顯示哪些/爲什麼需要確認/選擇? –

+0

感謝您的反饋意見: 我的實現已經在線程中,現在我無法改變我的功能的實現。 @john交互就像那樣。一旦獲得一些數據,我需要用一些值向用戶顯示彈出窗口,然後需要等待他的交互完成後,需要繼續我的過程。 ... – raj

回答

0

可以使用countdownlatch

class ConnectionThread extends Thread { 
     CountDownLatch countDownLatch = new CountDownLatch(1); 
     public ConnectionThread() { 
      this.setName("ConnectionThread"); 
     } 

     @Override 
     public void run() { 
      try { 
       sleep(2000); 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         //update ui then 
         countDownLatch.countDown(); 
        } 
       }); 
       countDownLatch.await(); 
       //start process again 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
相關問題