J2ME自动选择接入点

来源:互联网 发布:如何评价慈禧 知乎 编辑:程序博客网 时间:2024/05/18 00:55

      前些日子一在在做HTTP的相关事宜,适配机型的时候发现只有CMWAP和CMNET两个同时用的时候才是比较合理的。不管用户选择的是什么接入点,目标就是连接要快。

      在网上找了一下自动适醒连接方式的方法,基本都是采用先连接一种方式,如果连接不成功则偿试另一种方式。也许这可能也就是J2ME所能做到的最好方式。

      所以之前的做法也是先连接连接CMWAP,等这个连接完成之后判断返回值,然后再选择是否需要采用CMNET方式。中间再弄个计时器上去,设定一下超时。这种方式就是速度不怎么快,有可能会等上两种方式都试的时间,在一些机型上测试的时候需要2分钟才有结果返回,这么长的时间有些可怕。这可能会让用户的体验有点差。

      一天,在办公室里着磨着有什么比较好的方式可以提高速度,想着想着,突然有个念头:为什么我不能同一时间采用两种方式呢!赶紧跟高手确认一下同一时间能否采用两种方式,一得到肯定马上急着实现。

      一开始,新开两个线程,一个线程用于CMNET方式,另一个线程用于CMWAP方式,这两个都同时连接一个地址。返回让线程用个while让它sleep,直到其中一个连接方式有正常的返回值时,才继续主线程的事情。这里要注意,两个线程最好是采用同步,以免数据的混乱。当然,还得再弄个定时器,这样就避免两种方式都不行的时候还有个后路。

      这种方案在多数机型上,在GPRS连接上了之后,CMNET在5秒内有返回,CMWAP在10多秒有返回。这个效果不错。