天天看點

J2ME自動選擇接入點

      前些日子一在在做HTTP的相關事宜,适配機型的時候發現隻有CMWAP和CMNET兩個同時用的時候才是比較合理的。不管使用者選擇的是什麼接入點,目标就是連接配接要快。

      在網上找了一下自動适醒連接配接方式的方法,基本都是采用先連接配接一種方式,如果連接配接不成功則償試另一種方式。也許這可能也就是J2ME所能做到的最好方式。

      是以之前的做法也是先連接配接連接配接CMWAP,等這個連接配接完成之後判斷傳回值,然後再選擇是否需要采用CMNET方式。中間再弄個計時器上去,設定一下逾時。這種方式就是速度不怎麼快,有可能會等上兩種方式都試的時間,在一些機型上測試的時候需要2分鐘才有結果傳回,這麼長的時間有些可怕。這可能會讓使用者的體驗有點差。

      一天,在辦公室裡着磨着有什麼比較好的方式可以提高速度,想着想着,突然有個念頭:為什麼我不能同一時間采用兩種方式呢!趕緊跟高手确認一下同一時間能否采用兩種方式,一得到肯定馬上急着實作。

      一開始,新開兩個線程,一個線程用于CMNET方式,另一個線程用于CMWAP方式,這兩個都同時連接配接一個位址。傳回讓線程用個while讓它sleep,直到其中一個連接配接方式有正常的傳回值時,才繼續主線程的事情。這裡要注意,兩個線程最好是采用同步,以免資料的混亂。當然,還得再弄個定時器,這樣就避免兩種方式都不行的時候還有個後路。

      這種方案在多數機型上,在GPRS連接配接上了之後,CMNET在5秒内有傳回,CMWAP在10多秒有傳回。這個效果不錯。