2014-11-20 83 views
0

我在我的應用MyClientTask和CloseSocket中有兩個AsyncTask。 MyClientTask將連接到服務器並輸出服務器在文本視圖和通知中發送的任何內容,並按下連接並將消息發送到服務器的按鈕。它工作正常。 現在,對於CloseSocket,我想要一個斷開按鈕來停止連接。它的設置與連接按鈕完全相同。這當然是一個不同的AsyncTask,但它永遠不會被調用。沒有錯誤。當我聲明按鈕來查看它的設置是否正確時,我使用了一個簡單的System.out。我在「doInBackground」中也有一個System.out,它會讓我知道它是否被調用,而不是。我有Second AsyncTask never called called

socket.close(), socket.getInputStream().close(), socket.getOutputStream().close() 

關閉套接字,但沒關係,因爲CloseSocket AsyncTask永遠不會被調用。

此外,服務器正在每10秒鐘對應用程序進行ping測試以進行測試,因此我不知道這與應用程序有關。

+0

請顯示完整的onClick()和CloseSocket代碼。 – greenapps 2014-11-20 17:17:22

回答

2

從Honeycomb開始,AsyncTasks默認情況下是串行運行的,而不是並行運行。你需要告訴它在ThreadPoolExecutor上運行。

if (Build.VERSION.SDK_INT >= 11) { 
    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 
} else { 
    task.execute(); 
} 
+0

我會把這個放在哪裏? – 2014-11-20 17:12:48

+0

你現在在哪裏執行你的任務...? – 2014-11-20 17:15:58

+0

沒關係,我明白了,非常感謝。 – 2014-11-20 17:18:07