2016-05-19 32 views
0

我正在寫應用程序來通過java類Robot來控制Windows鼠標/鍵盤。應用程序正在使用套接字。 java中的服務器和android java中的客戶端。目前我有所有工作,但我有性能問題。我的應用程序如下: 顯示列表的MainMenu - >選擇了鍵盤,選擇了鼠標。比方說,我選擇先使用鼠標,它工作正常。然後我點擊我的手機上的返回按鈕,然後轉到鍵盤,現在我的性能變慢(很小的延遲)。當我回到老鼠,我有延遲,以及真正傷害。 我通過GlobalClass傳遞/共享連接的對象。 所以問題是如何最小化/修復這些延遲?如何在更改活動後襬脫延遲?

+0

很難說沒有看到一些代碼...... PC和手機是在同一個網絡上嗎?這不是網絡延遲問題? – BretC

+0

是的,他們在同一個網絡上。它看起來不像延遲問題。你需要哪部分代碼? –

+3

你的描述太模糊,無法理智回答。 「表現較慢」有多少? 10秒或10毫秒?是在應用程序或網絡中的延遲?你在這些活動之間傳遞了多少數據?沒有看到代碼(以及更多特定*信息),任何人都很難幫助你。 – adelphus

回答

0

這聽起來像你離開連接/插座打開。

因此,你的第一次使用,你連接一次。然後第二個用法,你有兩個連接,然後三個,依此類推。

最有可能向套接字發送額外數據,導致網絡性能變慢。

對此的簡單解決方案是..當您退出活動(按回到MainMenu)時,確保關閉您在活動中打開的所有連接。

因此,例如,在你的OnCreate()方法你已經打開了插座.. 在OnDestroy()方法確保,你是關閉它!

你也應該考慮到他們可能會用菜單按鈕關閉你的應用。 (稍後重新打開)。 所以你應該真的釋放OnPause()中的套接字並在OnResume()中啓動/重新啓動套接字,而不是創建和銷燬方法。

+0

不,我有1個全局變量與連接對象,所以我不想關閉並重新打開socket所有的時間 –

+1

@PatrykGurgul沒有任何代碼,我沒有辦法知道這一點。請在您的問題中提供代碼,以便有人可以更好地回答它。 – Doomsknight