項(xiàng)目的由來
去年10月份左右,個(gè)人開發(fā)了一個(gè)足球即時(shí)軟件,在此構(gòu)建的一個(gè)ui,加上一些解釋wml的一些項(xiàng)目,決定把兩者組合起來,開發(fā)一可用的瀏覽器,--- 這就是最此的想法。
經(jīng)過大概一個(gè)月左右時(shí)間實(shí)現(xiàn)了下,然后發(fā)布出來,但這個(gè)瀏覽器還不是一個(gè)可用的東西。
這個(gè)就是為什么有這個(gè)開發(fā)日志的由來,我想再接下來的時(shí)間里,對(duì)它進(jìn)行二次開發(fā),進(jìn)行重構(gòu)。 這篇文章開始的名字是:
重溫Wap Explorer之主頁從wml構(gòu)建 想來沒碰j2me也有好幾個(gè)月了,很是想念它,所以就動(dòng)用了這幾天的時(shí)間來重新構(gòu)建一個(gè)主頁出來,以前Wap Explorer的主頁完全是構(gòu)建一個(gè)class,然后在這個(gè)class里面添加那些控件顯示出來的,
這幾天我也不停的重構(gòu)wml解釋引擎,跟wap UI部件,昨天終于把主頁重構(gòu)完畢,發(fā)個(gè)帖出來,讓大家欣賞下。也算是報(bào)答各個(gè)網(wǎng)友的關(guān)心。
現(xiàn)在我把文章的名字變了下,改成
重構(gòu)Wap Explorer 使之可以成為一個(gè)商業(yè)產(chǎn)品?,之所以加個(gè)?號(hào),是因?yàn)橐粋€(gè)成熟的商業(yè)產(chǎn)品并不是想像的那么簡單。
不過有一點(diǎn)是可以肯定的,那就是每天不斷的重構(gòu),久了,一些東西就會(huì)顯現(xiàn)出來,很多不明朗跟不明白的東西都會(huì)跑出來,這是一件很有趣的事情。
以后我會(huì)以開發(fā)日志的形式更新這個(gè)帖子,以后的日志就不寫到這里了,直接跟帖,有興趣的朋友可以在這里討論,砸磚。
我很希望看到這樣的情況發(fā)生
先看看圖片,
然后再看看那些主頁跟幫助的wml
項(xiàng)目開發(fā)日志
5月23日,
1. 昨天運(yùn)行軟件的時(shí)候,發(fā)現(xiàn)出現(xiàn)了很多問題,1,wml解釋慢了點(diǎn),2,打開一些異常的url會(huì)出現(xiàn)程序崩潰,3,軟件運(yùn)行久了就會(huì)出現(xiàn)內(nèi)存溢出。
2. 今天重點(diǎn)解決的是wml解釋引擎優(yōu)化,網(wǎng)絡(luò)下載優(yōu)化等
3. 恩。
對(duì)了。你有沒有研究http下載速度問題
比如你獲取input然后,讀取長度,然后在對(duì)長度進(jìn)行分割,同時(shí)啟動(dòng)線程對(duì)那些分割進(jìn)行下載,這樣速度會(huì)快很多
4. 不過如果設(shè)計(jì)的好的話,同時(shí)啟動(dòng)2個(gè)線程去讀取數(shù)據(jù)到是可以的,特別是讀取圖片的時(shí)候,一定要同時(shí)開啟2個(gè)線程去讀取,不然的話,慢啊
5. 關(guān)閉所有日志輸出可以快很多。比如我打開日志輸出輸?shù)羰墙忉屢粋€(gè)比較大的wml是2秒,關(guān)閉的話0.8秒左右(不過這個(gè)日志的輸出,量比較大)
6. 在采用kxml解釋引擎的時(shí)候,發(fā)現(xiàn)kxml下載網(wǎng)絡(luò)數(shù)據(jù)的時(shí)候,會(huì)丟失數(shù)據(jù)包,所以解釋的時(shí)候,wml變了形狀,甚至是出現(xiàn)異常情況,導(dǎo)致程序崩潰,所以今天要解決的問題是自己實(shí)現(xiàn)下載機(jī)制,并采用多線程的技術(shù)進(jìn)行下載。
7.
5月22日,
8. 今天重點(diǎn)重構(gòu)一個(gè)下載進(jìn)度條,但是這個(gè)下載進(jìn)度條要人性化一點(diǎn)。怎么做了,上網(wǎng)去找下有沒有這方面的資料
9. 下載進(jìn)度條搞定,不過,很可惜,設(shè)計(jì)的不怎么好看。這個(gè)問題也解決了,進(jìn)度條也好看多了
10. 開始設(shè)計(jì)Cokie跟緩存功能,設(shè)計(jì)初期就遇到了困難,出現(xiàn)cache死鎖問題。
超鏈接支持打電話的功能了
5月21日,
11. 繼續(xù)修正了一些bug,給字體的標(biāo)簽進(jìn)行解釋。
12. 今天給字體加了個(gè)解釋顏色的功能,比如標(biāo)記<big color=”fff”>Fox</big>就可以實(shí)現(xiàn)不同樣式的字體了。哈
13. 實(shí)現(xiàn)了一個(gè)打電話的功能,發(fā)短信,發(fā)彩信的功能
14. 寫了一個(gè)help的wml跟main.wml哈哈,我可以成功的解釋這些wml,
15. 還沒實(shí)現(xiàn)的功能有input,selectOption跟img等標(biāo)記
16. 重構(gòu)了一個(gè)關(guān)于退出事件的方式,決定采用時(shí)間鏈的形式,給一個(gè)class傳入一個(gè)事件代碼
17. 超鏈接支持打電話的功能了
5月20日,
18. 今天重構(gòu)了WapPage的設(shè)計(jì),雖然主頁不夠完美,比如有些標(biāo)記支持的不好,但是這個(gè)是kxml解釋引擎的事情,還有一個(gè)解決了問題是可以支持,用戶查看狀態(tài)的問題了,還差一個(gè)下載狀態(tài)的UI,不過應(yīng)該很簡單。
19. 重構(gòu)了MainPage的設(shè)計(jì),設(shè)計(jì)成從wml文件中讀取數(shù)據(jù)然后顯示出來
20. 整天想這些東西真的很煩惱
5月19日,
1. 今天是禮拜6,我很開心,昨天晚上回到家,搞定了WapPage的一些重構(gòu),不過還差很多,比如關(guān)于瀏覽下拉頁面的時(shí)候,一個(gè)狀態(tài)條表示,用戶的動(dòng)作,下載進(jìn)度條。等等,今天重點(diǎn)是重構(gòu)下下來進(jìn)度狀態(tài)跟用戶事件的完善。
2. 繼前幾天搞定Kxml解釋wap出錯(cuò)的bug后,昨天晚上有對(duì)kxml解釋引擎進(jìn)行了
的重構(gòu),使之能解釋更多的wml標(biāo)記,并繪制出來。
3. 今天修改了日志輸出方式。這樣更易于調(diào)試。
4.
今天下午陪女朋友去逛了下街,廣州今天下雨,回來把一些想好了,但確未能實(shí)踐的做了下,感覺還不錯(cuò),WapPage重構(gòu)的差不多了,Kxml解釋引擎也差
不多了。現(xiàn)在忙于下載那些wml文件進(jìn)行本地調(diào)試,還出差一個(gè)下載進(jìn)度條,本想做一個(gè)ajax常用的進(jìn)度的,不過苦于沒有g(shù)if圖片分割,而我又對(duì)gif
不熟悉。哈
5. 功能修正了許多。
5月18日,
6. 今天的任務(wù)是重點(diǎn)重構(gòu)UI,要求是,每個(gè)UI都能記住自己的位置
7. 重點(diǎn)重構(gòu)WapPage這個(gè)UI,使之可以管理其他UI部件
5月16日,
1. 發(fā)現(xiàn)了kxml解釋引擎在解釋wml時(shí)候的一個(gè)bug,詳細(xì)看源代碼
2. 重構(gòu)了StringPart UI組件,使之可以自動(dòng)換行。這個(gè)功能已經(jīng)重構(gòu)完畢
3. 重構(gòu)WapPage部件,這個(gè)部件很關(guān)鍵,是把所有的Part UI組裝起來,所以說這個(gè)部件也是所有Part UI的Manage,設(shè)計(jì)的好,可以很容易做好統(tǒng)一管理,事件處理,資源釋放跟繪制管理等
4. 發(fā)現(xiàn)了一個(gè)很嚴(yán)重的bug,為什么我用kxml解釋wml的時(shí)候,會(huì)對(duì)一個(gè)tag重復(fù)的解釋兩次呢。找到問題的所在了,這個(gè)并不是kxml的bug,而是自己的疏忽,把函數(shù)放錯(cuò)了位置。現(xiàn)在問題解決了




Wml代碼:
主頁xml 代碼
- xml version="1.0"?>
- >
- <wml>
- <card id="index" title="饒榮慶">
- <p align="center"><BIG color="d4df">爬蟲工作室<!--</span-->BIG><!--</span-->p>
-
- <p align="center"><a > 3g <!--</span-->a><!--</span-->p>
- <p align="center"><a > [WAP中國]<!--</span-->a><!--</span-->p>
- <p align="center"><a > 空中網(wǎng)<!--</span-->a><!--</span-->p>
- <p align="center"><a >Wap帝國<!--</span-->a><!--</span-->p>
- <p align="center"><a > 巴掌<!--</span-->a><!--</span-->p>
-
-
- 此瀏覽器是我個(gè)人一個(gè)比較完整的作品,<br/>
- 為此我花了很多心血啊,主要是用來交流之用,<br/>
- 需要交流的朋友跟我聯(lián)系,<br/>
- 我的qq是43686904 <br/>
- 還有很多需要完善的地方<br/>
-
- <a href="local://help.wml">》幫助<!--</span-->a>
- <!--</span-->card> <!--</span-->wml>
xml 代碼
- xml version="1.0"?>
- >
- <wml>
- <card id="index" title="幫助">
- <p align="center"><BIG color="d4df">幫助<!--</span-->BIG><!--</span-->p>
-
-
-
- 這個(gè)瀏覽器的功能簡單,實(shí)用,個(gè)人很喜歡他,推薦給大家<br/>
- 為此我花了很多心血啊,主要是用來交流之用,<br/>
- 需要交流的朋友跟我聯(lián)系,<br/>
- 我的qq是<u color="DDFF">43686904<!--</span-->u> <br/>
- 我的電話是:<a href="wtai://wp/mc;13588888888">13588888888<!--</span-->a><br/>
- 還有很多需要完善的地方<br/>
- <a href="local://main.wml">》返回上一級(jí)<!--</span-->a>
- <!--</span-->card> <!--</span-->wml>
以后的一些文章我將會(huì)解釋我是怎么樣進(jìn)行重構(gòu)的,重構(gòu)的過程是很快樂的。哈
下面還是圖片
繼續(xù)帖些圖出來

這個(gè)是今天完善了一個(gè)下載wml跟解釋wml的進(jìn)度條,在頂部黃色的那個(gè)部分

。
繼續(xù)貼圖
下面是打開wap中國網(wǎng)站的截圖


這個(gè)是3G門戶圖片
圖片發(fā)來發(fā)去就是這些,程序開發(fā)的工作也還沒有結(jié)束,但把程序開發(fā)好了,并運(yùn)行一段時(shí)間沒有內(nèi)存溢出的時(shí)候,再讓大家玩下。哈
1. 今天重構(gòu)WMLParser,使之不已mainform耦合。經(jīng)過20多分鐘的努力終于重構(gòu)完畢這個(gè)方面的功能
2. 下面可能要設(shè)計(jì)一個(gè)把wml轉(zhuǎn)換成string,用于保存網(wǎng)頁的功能,比如把string保存到rms中
3. 網(wǎng)上看了下,順便就整理下手機(jī)的各個(gè)參數(shù)的支持..
4. 終于搞定了系統(tǒng)屬性的查看,發(fā)現(xiàn)程序運(yùn)行一段時(shí)間后,內(nèi)存不段上升.確實(shí)是有內(nèi)存瓶頸,得努力改進(jìn)
明天跟以后的時(shí)間打算設(shè)計(jì)一個(gè)文本解釋引擎,就是從文本中解釋然后再繪制成控件,主要是用來保存網(wǎng)頁