Ksoap2-android在Android真機上call方法非常慢


    大家好,在Android上使用ksoap2進行webservice開發,在android模擬器上調用call函數時只需要1-2秒就可以得到回復,而在真機上調用同樣的代碼需要10-15秒才能得到回復。別的代碼在真機上運行速度都很快,就是運行call函數速度慢,請問有可能是什么原因導致在真機上運行這么慢?Ksoap2的版本2.6.2和2.6.3都試過,結果一樣。

    所有測試環境均在局域網中進行,Webservice服務器和無線路由器相連,路由器型號為迅捷FW300R。
    webservice模擬器運行環境:筆記本處理器T6570(2.1GHz),內存2G,系統Windows 7。筆記本通過無線網卡Intel 5100AGN和無線路由器相連,模擬器為Android 2.3.3。
    Android真機:華為U8860(Android版本2.3.6)、小米(Android 2.3.5),真機通過WIFI和無線路由器相連。二者的速度相當,都需要10到15秒才能得到回復。

    為什么使用真機的速度會如此的慢,所采用的真機的性能也不差,而且手機收到數據后,解析的速度也是相當快,就是在請求的時候速度相當慢。請問大家覺得最有可能是什么原因?會不會是網絡的問題?如何解決?手機使用WIFI速度應該足夠了,何況筆記本也是通過WIFI和路由器相連,速度就很快。有人說無線路由器WMM功能可能導致手機的速度慢,但我關了速度還是一樣很慢。請大家給予建議或指點,謝謝大家。

26 个解决方案

#1


引用樓主  的回復:
    大家好,在Android上使用ksoap2進行webservice開發,在android模擬器上調用call函數時只需要1-2秒就可以得到回復,而在真機上調用同樣的代碼需要10-15秒才能得到回復。別的代碼在真機上運行速度都很快,就是運行call函數速度慢,請問有可能是什么原因導致在真機上運行這么慢?Ksoap2的版本2.6.2和2.6.3都試過,結果一樣。

    所有測試環境均在……

對不起,第5行字,是Android模擬器運行環境,不是webservice模擬器運行環境!!!

#2


頂起啊,一樣的疑惑

#3


本人這兩天也再做利用ksoap2訪問web服務的程序
我沒有遇到樓主說的問題
真機上也是1~2秒就得到回復,
哪怕是走3G網絡(聯通),不用wifi也是1~2秒(服務器電信)
手機是摩托MB525


但是我遇到一個很蛋疼的問題
代碼混淆之后,貌似通信變慢了,
小數據量看不出來
大數據量(有個傳輸圖片的需求,1M左右)
wifi下不混淆,5秒,混淆后將近一分鍾

#4


可能是混淆導致的,我用ksoap2訪問服務很快的,模擬器和手機都一樣,代碼沒有混淆。
但是如果你沒有混淆的話在模擬器上快,在真機上慢的話有可能是網絡和手機的問題,這就不是代碼問題了

#5


引用 4 樓  的回復:
可能是混淆導致的,我用ksoap2訪問服務很快的,模擬器和手機都一樣,代碼沒有混淆。
但是如果你沒有混淆的話在模擬器上快,在真機上慢的話有可能是網絡和手機的問題,這就不是代碼問題了

謝謝您回復,我傳輸的數據量就很小,每次只有幾百字節,我現在也在想是不是路由器和手機兼容性不好??訪問者和服務提供者都在一個局域網內,不可能這么慢啊!!!至於您說的代碼混淆,我是個初學者,沒有弄過。。

#6


引用 3 樓  的回復:
本人這兩天也再做利用ksoap2訪問web服務的程序
我沒有遇到樓主說的問題
真機上也是1~2秒就得到回復,
哪怕是走3G網絡(聯通),不用wifi也是1~2秒(服務器電信)
手機是摩托MB525


但是我遇到一個很蛋疼的問題
代碼混淆之后,貌似通信變慢了,
小數據量看不出來
大數據量(有個傳輸圖片的需求,1M左右)
wifi下不混淆,5秒,混淆后將近一分鍾

我最近也在學習這個方面的,可是遇到了一些問題,能不能幫我看看啊,萬謝!

#7


前幾天,看到有人發帖說
如果所在局域網環境無法訪問外網的話
會導致call方法變慢,每次要好久才能得到反饋
我沒試過
因為我用的公司的路由測的,然后公司路由都是有接外網的,我不能要求他們關閉外網讓我測

我個人懷疑,call方法是否需要訪問外圍dns服務器,結果因為不能訪問,每次都要等超時才能得到反饋?
這個僅僅是個人猜測

#8


to 6樓
遇到問題,可以發帖問嘛
在我能力范圍內,我是會盡力解答的

不過,
我接觸安卓也就2個多月
依然是菜逼一個
csdn這個安卓板塊,上面的問題,絕大部分我都不懂
估計也幫不上什么忙

#9


讓你的局域網能上外網試試,或者用2.3以下android版本,就應該很快

局域網不能外網、android2.3以上就慢。
這個問題困擾了很久了,沒找到解決辦法。

#10


局域網沒有連外網,Android 2.3 樂Pad連webserveric真慢,有哪位高人知道?

#11


引用 7 樓  的回復:
前幾天,看到有人發帖說
如果所在局域網環境無法訪問外網的話
會導致call方法變慢,每次要好久才能得到反饋
我沒試過
因為我用的公司的路由測的,然后公司路由都是有接外網的,我不能要求他們關閉外網讓我測

我個人懷疑,call方法是否需要訪問外圍dns服務器,結果因為不能訪問,每次都要等超時才能得到反饋?
這個僅僅是個人猜測

謝謝您的回復,我確實只在局域網內沒有連外網,用無線路由器組了個局域網。在學校只能用netkeeper連外網,路由器無法自己撥號。。在電腦上使用模擬器的時候,也沒連外網,電腦有線網卡連接校園網,無線網卡連接我那個無線路由器,但有時速度很快(不過有時和手機一樣慢)。不知道什么原因了,難道真的像您說的必須連接外網才能使速度變快?

#12


引用 9 樓  的回復:
讓你的局域網能上外網試試,或者用2.3以下android版本,就應該很快

局域網不能外網、android2.3以上就慢。
這個問題困擾了很久了,沒找到解決辦法。


謝謝您的回復,我的局域網不能連接外網,因為路由器無法進行netkeeper撥號。寫好的程序無法在Android2.3以下的版本運行,在Android 2.1環境下可以編譯通過,但只要運行程序立即崩潰,將minSdkVersion改為7都不行,只能在Android2.3以后的版本運行。。也不知道什么原因。您是在局域網可以上外網的情況下速度很快,而不能上外網的情況下速度很慢嗎?謝謝。。

#13


是的。。。。。。。

#14


剛才另一個關於這個問題的帖子里
有人說
將ksoap2更新至最新版本,可以解決沒外網就很卡的問題
就是下面這個貼:
http://topic.csdn.net/u/20120112/12/5cacd216-ea39-4fc6-b4bf-1f0fb0f8dc92.html?98140

至於只能2.3以上版本才能正常運行的問題

個人懷疑,是不是你用了什么只有2.3以上才有的api?

#15


引用 14 樓  的回復:
剛才另一個關於這個問題的帖子里
有人說
將ksoap2更新至最新版本,可以解決沒外網就很卡的問題
就是下面這個貼:
http://topic.csdn.net/u/20120112/12/5cacd216-ea39-4fc6-b4bf-1f0fb0f8dc92.html?98140

至於只能2.3以上版本才能正常運行的問題

個人懷疑,是不是你用了什么只有2.3以上才有的api……

謝謝您的回答。根據您的提示,將路由的WAN口連接在校園網上也可以加快速度,反應時間提高到1s以內,或許真的是需要查詢DNS吧(我也不知道,猜的),我們校園網內有DNS服務器。謝謝了。。那個不能再2.1版本運行的問題我也不知道,我在2.1版本環境下編譯通過了,卻無法運行。。如果使用了2.3的api,2.1的環境下可以編譯通過嗎?

#16


引用 13 樓  的回復:
是的。。。。。。。

謝謝。。問題已基本解決。。感謝提供建議。。

#17


你如果可以的話直接調用android的GET或POST提交數據,不要用webservice這樣可能會不用去訪問DNS而加快返回速度

#18


關於不能在2.1執行的問題
或許你可以斷點調試一下
斷點就設在第一個acitivity的onCreate的第一行,能進到這里的話,再一步步走下去,總能找到出錯的地方


可以觀察一下Logcat上的信息(貌似這個是比較靠譜的方法,不過,Logcat上的信息我不怎么看得懂
你自己搞不定的話,可以把Logcat信息貼出來,讓懂的幫你看看

#19


這個問題終於解決了,跟蹤發現時Android API里的HttpUrlConnection這個類getOutputStream和getInputStream很慢,不是ksoap2的問題,冤枉他了

解決的途徑是
1. 不啟用無線路由的DHCP服務,使用靜態IP,服務器都使用靜態IP連路由
2. 在平板上設置靜態IP,點設置 >> 無線和網絡 >> Wi-Fi設置 >> 點擊菜單按鈕(屏幕下邊三個按鈕最左邊一個) >> 高級  >> 使用靜態IP 勾上 >> 設置 IP地址,網關,網絡掩碼,域名1(一定記得輸入0.0.0.0),最后點擊菜單按鈕選保存

只要保證平板使用靜態IP連上無線路由,並且域名為0.0.0.0,安卓就不會再花20S+通過DNS解釋什么域名了。
我在多台平台平板上測試多沒有問題

#20


遇到同樣的問題!!!!

#21


3G網絡call的時候很慢,2G正常
很奇怪啊

#22


我也遇到了,原來的開發的軟件在安卓2.2上運行的,現在放到2.3的上面就出現登錄退出等涉及到數據交換的就很慢~要25秒說的,在安卓4.0上和安卓2.2上正常,郁悶,不知道什么情況~~

#23


呵呵,這個是android 2.3 sdk的bug  
為了程序的兼容性,改用httpclient訪問服務吧

#24


請問樓主解決了嗎 ?到底是什么原因,小弟現在也遇到這個問題了,路由器連接的外網,android手機不管是多少的系統都是很慢。跪求解決方案?

#25


各位大神好,在下也遇到這個問題,請問你們是怎么解決的,多多指教,謝謝!

#26


我的應用在3G網絡下沒問題,在自己家的wifi下也沒問題,在公司的wifi下就請求很慢,這是不是和公司的網絡有關系?

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: