2012-02-15 50 views
3

我即將開始製作一個應用程序,它應該作爲一個tcp聊天客戶端,我一直在閱讀和閱讀,並得出結論,這將是最好的(如果不是必需的?)把我的插座和讀者在asynctask。Android套接字和asynctask

事情我不知道該從哪裏開始,因爲即時通訊對於Android來說這是一項對我來說至關重要的事情,但對於我來說理解它卻是至關重要的。

  1. 實例化主類中的viewvs並創建一個從EditText發送文本到異步類的方法。

  2. 創建異步類,使用套接字和連接,將讀取器放置在此處和寫入器,寫入器將成爲接收通過套接字發送的字符串參數的方法。

  3. 不知何故,我的讀者不斷地收聽服務器套接字,並用發送的字符串更新我的textview。

這是一個很好的基本「計劃」開始編程或有缺陷,或者我失去了一些東西嗎?即使開始之前我得到的一個問題是異步任務,我能做到嗎?據我所知,我不需要返回任何東西,我不會需要任何更新進度?我的客戶端地址將被硬編碼,所以即時猜測這是唯一我想要傳遞參數到異步類?

對不起,如果它的基本,但即時啓動,並希望不會出錯。

回答

6

您只想使用AsyncTask進行小的(相對)和直接操作,例如下載特定項目(例如圖像或mp3)。這聽起來像你想要的是Service。該服務將在您的應用程序的後臺運行,您可以通過該服務處理您的網絡操作。

對於其他有用的文檔和看幫助,如果該服務是適合你,look here.

編輯:

對於在自己的線程創建服務的更多信息,refer to this.

編輯2 :

試圖想到的是作爲反活動。它完成一項活動不應該做的一切,主要是處理。任何核心處理都應該在一個線程服務中完成,原因很多,主要是爲了多任務處理和從主UI線程處理。爲了解釋這一點,想想潘多拉。潘多拉創建一個服務(在它自己的線程中),連接到它的網站並傳輸音樂。該服務有一個生命週期,可以讓它在活動被殺的同時生活。這允許音樂流傳送,用戶將執行其他任務。但是當用戶想看看正在播放的內容時,她只需點擊進入該應用。在那裏,活動將檢查服務,查看它是否有一些數據,並將其內容基於服務中的數據。

我希望這會有所幫助。我真的想不出更好的爲什麼要把它...

+0

但據我所知,它的服務不運行在自己的線程,不是這首選或要求的套接字,將不斷在聽ServerSocket的? – Gvs 2012-02-15 17:11:03

+0

你可以在自己的線程中創建一個服務。只需創建一個實例線程並在其中創建服務。 – AedonEtLIRA 2012-02-15 17:31:29

+0

很抱歉,我沒有看到服務上的優勢?它是否給了我開始和結束命令,還是我錯過了服務的主要優點? – Gvs 2012-02-15 20:31:47