4
我想知道如何設置收聽特定端口的安卓服務,例如http://127.0.0.1:12345安卓服務收聽特定端口
我想知道如何設置收聽特定端口的安卓服務,例如http://127.0.0.1:12345安卓服務收聽特定端口
實施您的服務並使用ServerSocket
類來偵聽傳入連接並對其執行操作。不過,不要在你的UI線程上調用ServerSocket.accept()
。這會導致您的應用程序無法響應。相反,創建一個新的線程或根據您的實際情況,AsyncTask
可能就足夠了。
@Steven Prentice你好。你的回答真的幫了我。我在'AsyncTask'中試過了,它失敗了。然後我在一個單獨的線程中嘗試了它,它像魔術一樣工作。我想知道爲什麼'ServerSocket'這樣做。當然,它已經在UI線程中疲倦了,並且在那裏也失敗了。這是爲什麼 ?如果我不介意我的活動掛起,因爲它的唯一目的是通過單擊按鈕來啓動服務器,例如? – 2017-10-29 17:53:30
@JasonKrs:它應該與AsyncTask一起工作,只要你在doInBackground()中執行ServerSocket業務。如果你可以在這裏分享代碼,那麼我們可以幫助更多。就UI線程而言,這是Android提供的限制(可等待任務完成〜5秒),因爲UI線程負責很多事情。從文檔:系統不會爲組件的每個實例創建單獨的線程。在同一個進程中運行的所有組件都在UI線程中實例化,並且從該線程分派對每個組件的系統調用。 – 2018-01-05 05:32:34
@UncaughtException在'doInBackground()'中的Ahhh ...我認爲我可能沒有這樣工作......也許這就是爲什麼它失敗了......無論如何,很多事情已經完成了對高級項目的處理,所以我不會重新編程該功能...我會繼續努力與舊時尚主題。 ;-) – 2018-01-06 15:11:40