大家好,在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 个解决方案
本人這兩天也再做利用ksoap2訪問web服務的程序
我沒有遇到樓主說的問題
真機上也是1~2秒就得到回復,
哪怕是走3G網絡(聯通),不用wifi也是1~2秒(服務器電信)
手機是摩托MB525
但是我遇到一個很蛋疼的問題
代碼混淆之后,貌似通信變慢了,
小數據量看不出來
大數據量(有個傳輸圖片的需求,1M左右)
wifi下不混淆,5秒,混淆后將近一分鍾
可能是混淆導致的,我用ksoap2訪問服務很快的,模擬器和手機都一樣,代碼沒有混淆。
但是如果你沒有混淆的話在模擬器上快,在真機上慢的話有可能是網絡和手機的問題,這就不是代碼問題了
前幾天,看到有人發帖說
如果所在局域網環境無法訪問外網的話
會導致call方法變慢,每次要好久才能得到反饋
我沒試過
因為我用的公司的路由測的,然后公司路由都是有接外網的,我不能要求他們關閉外網讓我測
我個人懷疑,call方法是否需要訪問外圍dns服務器,結果因為不能訪問,每次都要等超時才能得到反饋?
這個僅僅是個人猜測
to 6樓
遇到問題,可以發帖問嘛
在我能力范圍內,我是會盡力解答的
不過,
我接觸安卓也就2個多月
依然是菜逼一個
csdn這個安卓板塊,上面的問題,絕大部分我都不懂
估計也幫不上什么忙
讓你的局域網能上外網試試,或者用2.3以下android版本,就應該很快
局域網不能外網、android2.3以上就慢。
這個問題困擾了很久了,沒找到解決辦法。
局域網沒有連外網,Android 2.3 樂Pad連webserveric真慢,有哪位高人知道?
剛才另一個關於這個問題的帖子里
有人說
將ksoap2更新至最新版本,可以解決沒外網就很卡的問題
就是下面這個貼:
http://topic.csdn.net/u/20120112/12/5cacd216-ea39-4fc6-b4bf-1f0fb0f8dc92.html?98140
至於只能2.3以上版本才能正常運行的問題
個人懷疑,是不是你用了什么只有2.3以上才有的api?
你如果可以的話直接調用android的GET或POST提交數據,不要用webservice這樣可能會不用去訪問DNS而加快返回速度
關於不能在2.1執行的問題
或許你可以斷點調試一下
斷點就設在第一個acitivity的onCreate的第一行,能進到這里的話,再一步步走下去,總能找到出錯的地方
可以觀察一下Logcat上的信息(貌似這個是比較靠譜的方法,不過,Logcat上的信息我不怎么看得懂
你自己搞不定的話,可以把Logcat信息貼出來,讓懂的幫你看看
這個問題終於解決了,跟蹤發現時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解釋什么域名了。
我在多台平台平板上測試多沒有問題
我也遇到了,原來的開發的軟件在安卓2.2上運行的,現在放到2.3的上面就出現登錄退出等涉及到數據交換的就很慢~要25秒說的,在安卓4.0上和安卓2.2上正常,郁悶,不知道什么情況~~
呵呵,這個是android 2.3 sdk的bug
為了程序的兼容性,改用httpclient訪問服務吧
請問樓主解決了嗎 ?到底是什么原因,小弟現在也遇到這個問題了,路由器連接的外網,android手機不管是多少的系統都是很慢。跪求解決方案?
各位大神好,在下也遇到這個問題,請問你們是怎么解決的,多多指教,謝謝!
我的應用在3G網絡下沒問題,在自己家的wifi下也沒問題,在公司的wifi下就請求很慢,這是不是和公司的網絡有關系?