2011-06-13 68 views

回答

4

實施您的服務並使用ServerSocket類來偵聽傳入連接並對其執行操作。不過,不要在你的UI線程上調用ServerSocket.accept()。這會導致您的應用程序無法響應。相反,創建一個新的線程或根據您的實際情況,AsyncTask可能就足夠了。

+0

@Steven Prentice你好。你的回答真的幫了我。我在'AsyncTask'中試過了,它失敗了。然後我在一個單獨的線程中嘗試了它,它像魔術一樣工作。我想知道爲什麼'ServerSocket'這樣做。當然,它已經在UI線程中疲倦了,並且在那裏也失敗了。這是爲什麼 ?如果我不介意我的活動掛起,因爲它的唯一目的是通過單擊按鈕來啓動服務器,例如? – 2017-10-29 17:53:30

+0

@JasonKrs:它應該與AsyncTask一起工作,只要你在doInBackground()中執行ServerSocket業務。如果你可以在這裏分享代碼,那麼我們可以幫助更多。就UI線程而言,這是Android提供的限制(可等待任務完成〜5秒),因爲UI線程負責很多事情。從文檔:系統不會爲組件的每個實例創建單獨的線程。在同一個進程中運行的所有組件都在UI線程中實例化,並且從該線程分派對每個組件的系統調用。 – 2018-01-05 05:32:34

+0

@UncaughtException在'doInBackground()'中的Ahhh ...我認爲我可能沒有這樣工作......也許這就是爲什麼它失敗了......無論如何,很多事情已經完成了對高級項目的處理,所以我不會重新編程該功能...我會繼續努力與舊時尚主題。 ;-) – 2018-01-06 15:11:40