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 联系我们: