大家好,在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下就请求很慢,这是不是和公司的网络有关系?