免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
J2ME機(jī)型適配中的各種問(wèn)題總結(jié)

一般是常用的尺寸都做好需要的對(duì)應(yīng)的素材,常見(jiàn)的一些屏幕尺寸128x160,176x220,240x320,還有WVGA(320*480),HVGA(480*800),最后還得準(zhǔn)備一個(gè)通用版的,或者一個(gè)比較小的版本,如果碰到不能判斷和適合的版本,就只能盡量用小屏幕的版本。反正手機(jī)開(kāi)發(fā),一般都是分好多版本,畢竟手機(jī)的各種配置太多樣化了

下面記載的都是手機(jī)java實(shí)現(xiàn)中各種奇怪的毛病,bug,或者……特性,是根據(jù)某項(xiàng)目的開(kāi)發(fā)經(jīng)驗(yàn)總結(jié)出來(lái)的。但是涵蓋的手機(jī)型號(hào)還是有限。因此很有可能某些“特性”會(huì)存在于更多的采用了相同JVM(比如平臺(tái)相同、生產(chǎn)廠(chǎng)商)的手機(jī)上。


                                                       == 早期S60的內(nèi)存泄漏 ==
這個(gè)bug可以上溯至2003年,甚至更早。表現(xiàn)為java應(yīng)用中如果使用了Class.getResourceAsStream("本地文件")無(wú)法釋放其占用的內(nèi)存,是的,沒(méi)有任何辦法,無(wú)論是調(diào)用獲得的的InputStream實(shí)例的close()或?qū)⑵湓O(shè)為null,甚至顯式強(qiáng)制System.gc(),都沒(méi)有效果。結(jié)果就是至少和本地文件同尺寸的內(nèi)存成為了無(wú)法回收的垃圾。這個(gè)問(wèn)題還影響到以Class.getResourceAsStream()為基礎(chǔ)的Image.createImage()(這個(gè)是最要命的,如何能夠不使用圖片資源呢?。?。
這個(gè)bug據(jù)說(shuō)在新的S60上已經(jīng)解決了。但是Nokia3230(4.0526.2ch)、Nokia7610(6.0525.0ch)都存在這個(gè)問(wèn)題。對(duì)于這些個(gè)有問(wèn)題的機(jī)型,在java程序中是無(wú)法完美解決這個(gè)問(wèn)題的,只能盡量避免。比如集中、統(tǒng)一載入資源,永不釋放(也就是說(shuō),盡量控制泄漏的次數(shù))。當(dāng)然,這會(huì)對(duì)已有代碼造成很大影響。畢竟手機(jī)java應(yīng)用是內(nèi)存受限系統(tǒng)的典型,大多數(shù)情況下,珍貴的內(nèi)存中只保留需要的資源。


                                                     == 鍵盤(pán)響應(yīng)事件 ==
在MIDP1中,獲取鍵盤(pán)事件只能自己實(shí)現(xiàn)Canvas.keyPressed()。但是MotorolaE398和SonyEricssonK700c的實(shí)現(xiàn)卻很奇怪。表現(xiàn)為左右軟鍵有可能在這個(gè)方法中捕獲不到。而是否能夠成功捕獲,取決于keyPressed()方法中代碼的行數(shù)……
我承認(rèn)我沒(méi)徹底搞清楚這其中的玄機(jī)。鬼知道Motorola和SonyEricsson是怎么實(shí)現(xiàn)的JVM。我只知道把keyPressed中的所有代碼提取到另外一個(gè)函數(shù)中,在keyPressed只把參數(shù)傳遞給新函數(shù),問(wèn)題就消失了……

                                               == 超慢的drawRegion ==


除了N-Gage QD,幾乎所有的NokiaS60手機(jī)都實(shí)現(xiàn)了MIDP2的支持。MIDP2中,最為重要的幾個(gè)特性之一就是Graphics.drawRegion。這個(gè)API可以方便的將圖片旋轉(zhuǎn)、剪切之后畫(huà)到畫(huà)布上。
但是,這個(gè)API在Nokia3230、Nokia7610等手機(jī)上的實(shí)際性能表現(xiàn)讓人實(shí)在不敢恭維。于是,這個(gè)最重要的API成了擺設(shè)…
…沒(méi)什么怎么辦,只能急需延用MIDP1的做法,自己實(shí)現(xiàn)剪切和旋轉(zhuǎn),或者像我一樣懶,直接要求美工把旋轉(zhuǎn)之后的圖片全都做出來(lái)……


                                      == 詭異的內(nèi)存容量==


按照官方Spec,Java在Nokia3125上的可用內(nèi)存(即Java Heap Size)為512k。但是實(shí)際測(cè)試的結(jié)果是,Nokia3125只有412k左右的實(shí)際內(nèi)存,相差整整100k。不過(guò)好在Nokia3125并不是種市場(chǎng)保有量很高的型號(hào)。但是它是我正在使用的型號(hào)……


                                                       == 無(wú)法repaint ==
這個(gè)問(wèn)題只存在于SonyEricssonK700c。表現(xiàn)為在keyPressed()中調(diào)用repaint()進(jìn)行屏幕重畫(huà)沒(méi)有任何反應(yīng)。
解決辦法是,在keyReleased()中補(bǔ)一個(gè)repaint()……


                                                       == UTF8 ==
還是SonyEricssonK700c的問(wèn)題。問(wèn)題存在于new String(byte[], charset)上。也就是說(shuō),當(dāng)獲得了某個(gè)byte[],并希望用UTF8作為字符集將其轉(zhuǎn)換為字符串的時(shí)候,使用上述方法在SonyEricssonK700c上會(huì)出現(xiàn)丟失字符的現(xiàn)象。這個(gè)現(xiàn)象很詭異,以至于我目前沒(méi)有搞清楚什么情況下會(huì)丟失字符(我甚至專(zhuān)門(mén)寫(xiě)了個(gè)測(cè)試程序在真機(jī)上跑,得出的結(jié)論是丟失字符的原因可能會(huì)很復(fù)雜,簡(jiǎn)單的拿被丟掉字符附近的一個(gè)子串來(lái)測(cè)沒(méi)有任何問(wèn)題)。
幸虧還是有解決辦法的。不用new String就完了,而要用更加麻煩的辦法,比如像我一樣,用ByteArrayInputStream,外面套InputStreamReader(bais, "UTF8"),然后用StringBuffer一個(gè)一個(gè)char讀進(jìn)來(lái),最后再toString()……


                                                    == 不可靠的copyArea ==


這是Motorola機(jī)器上的問(wèn)題,V3和E398都有。copyArea是Graphics的作整塊屏幕像素copy的常用API(2D動(dòng)態(tài)背景的游戲幾乎是必不可少)。按照Sun官方的Spec,手機(jī)廠(chǎng)商有義務(wù)來(lái)保證其API實(shí)現(xiàn)不存在覆蓋沖突問(wèn)題。但是Motorola顯然做得不夠好。在Motorola手機(jī)上使用這個(gè)API會(huì)隨機(jī)產(chǎn)生貼圖混亂的情況……
解決辦法是自己實(shí)現(xiàn)另外一套機(jī)制。比如使用另外一張至少和屏幕同樣大小的Image作為緩沖,用兩次drawImage來(lái)替代copyArea……不過(guò)這個(gè)方法顯而易見(jiàn)的缺點(diǎn)是消耗了更多的內(nèi)存(那可是不小于屏幕尺寸的Image?。。?。如果內(nèi)存實(shí)在吃緊,只能退而再求其次,作為緩沖的Image繼續(xù)縮水,drawImage的次數(shù)繼續(xù)增加……不過(guò)這個(gè)時(shí)候需要自己手工解決覆蓋沖突……

                                                       == 無(wú)法安靜下來(lái)的3220 ==


不知道這個(gè)問(wèn)題是不是在S40平臺(tái)上都有,手里S40又支持MIDI的手機(jī)實(shí)在是太少了……
3220的一個(gè)很明顯的特征就是聲音大。以至調(diào)用了VolumeControl.setLevel(0)之后還是有聲音,和Sun官方的Spec完全不符……沒(méi)辦法,只能在需要靜音的時(shí)候,再補(bǔ)一個(gè)VolumeControl.setMute(true)。

                                                               == 永不ready ==


這是一段手機(jī)java獲取網(wǎng)絡(luò)數(shù)據(jù)的常用代碼:while(InputStream.ready()) { InputStream.read() }。
但是經(jīng)測(cè)試,在Nokia3230上,這個(gè)ready永遠(yuǎn)返回false……沒(méi)辦法,如果不改上述代碼的話(huà),就自己實(shí)現(xiàn)一個(gè)繼承類(lèi)吧

。


補(bǔ)充:
nokia

1. 老40的class限制大概在105k左右(所有的class加起來(lái),混吆后,未壓縮的大小),超出一點(diǎn),連構(gòu)造子也進(jìn)不去了,就是說(shuō),classloading的時(shí)候就out of memory了

2. 6230i, 很奇怪的208x208屏幕,40系統(tǒng),聲音播放與40兼容, 不能servicerepaints, 否則聲音播放有問(wèn)題

3. 7370 ,command不在左右邊而在中間, 聲音的inputstream關(guān)閉后聲音放不放出來(lái),不能servicerepaints, 否則聲音播放卡住

4. 60進(jìn)入后立即退出, 用midp1.0重新編譯試試, 60, fullcanvas如果從沒(méi)有setclip,有一定的幾率屏幕下方放不出

5.6680:問(wèn)題:運(yùn)行速度極慢 解決方法:重啟. 此機(jī)使用final變量(方法內(nèi)部定義的)會(huì)有莫名其妙的問(wèn)題,變量不是定義時(shí)的數(shù)值。問(wèn)題:打進(jìn)入電話(huà)后不pauseApp,游戲音樂(lè)不停,沒(méi)有電話(huà)鈴聲,解決方法:用hidennotify,在其中釋放聲音

6. j2me 反復(fù)調(diào)用Graphics方法是導(dǎo)致nokia40運(yùn)行緩慢的主要原因, 這一點(diǎn)在橫軸卷頻游戲中尤其明顯,相比之下,servicerepaints和gc兩個(gè)方法并不緩慢
解決方法,建立一個(gè)image,將背景畫(huà)在其上,每次卷軸都保留需要的部分,更新需更新的部分,然后數(shù)次繪制此image拼成背景,能有效提高性能

7.如何對(duì)抗nokia 3650 存儲(chǔ)已滿(mǎn)
一次性io操作
createimage , getresourceasstream 一次性做完扔在內(nèi)存里,3650 io 會(huì)內(nèi)存泄漏
image.getgraphics()
此操作每次創(chuàng)建新graphics, image不gc掉graphics也不會(huì)gc掉,每個(gè)image只.getgraphics一次
3650,7650,QD如果有這樣問(wèn)題同上處理

8. nokia s40(新)在paint所在線(xiàn)程放聲音鎖死,不知為什么,不是所有游戲都會(huì)發(fā)生,但是如果發(fā)生了,那就必然而不是隨機(jī)發(fā)生。

9 新40對(duì)midi的兼容性不是很好,如果聲音放不出需音效修改

10 qd游戲切出去后不能從百寶箱里選擇進(jìn)入,但可以長(zhǎng)按菜單鍵切回. 在paint之間sleep即可在百寶箱里切回seimens

1. SX 問(wèn)題:mmapi放聲音老是device unavailible,解決方法:換成nokia sound(wav)

2. SX 程序第一次執(zhí)行沒(méi)有問(wèn)題,退出后再進(jìn)直接nullpointer except ,去掉所有static后ok

三菱

1.m750 循環(huán)前后需要加同步與限幀才能打進(jìn)電話(huà)

阿爾卡特

1.ot556 getGraphics 極其慢, rms沒(méi)有作用.

NEC

1.nec 820也是個(gè)需要手動(dòng)gc的主,  日韓手機(jī)之通病-_-!

2. nec 820 class Media; getAudioClip太多次有可能導(dǎo)致audioclip放了一點(diǎn)點(diǎn)聲音就斷掉.也有可能不發(fā)生這個(gè)事情. 解決方法: 一次建立所有的audioclip

3. nec 820 class audioClip; 設(shè)置的loopcount在stop以后失效 解決方法:  重新設(shè)置loopcount會(huì)出exception,用audiolistener

4.nec830可能認(rèn)不出一些mid文件,讓音效修改之


samsung
1.d508 drawline有問(wèn)題,drawrect據(jù)說(shuō)也有問(wèn)題,fill rect好的command 底下那一塊繪制有毛病,一會(huì)紅一會(huì)黑的,在那繪制有莫名奇妙的問(wèn)題

moto

1. E2, 只能同時(shí)打開(kāi)4個(gè)player, 持續(xù)關(guān)閉和創(chuàng)建player,在半小時(shí)到一小時(shí)后會(huì)莫名其妙退出. 播放聲音在一開(kāi)始會(huì)卡一下, 聲音超級(jí)難聽(tīng),還號(hào)稱(chēng)音樂(lè)手機(jī),垃圾

2.  L6, 14x的icon

索愛(ài)

1.t628 系統(tǒng)資源不足,要求我刪文件,刪無(wú)可刪

2, k300,k500系列整圖卷屏?xí)r, 當(dāng)整圖畫(huà)在左上角時(shí)有可能位置比實(shí)際坐標(biāo)偏左了一點(diǎn), 看上去背景向左邊閃了一下,如果出現(xiàn)這個(gè)問(wèn)題可以將整圖向左邊沒(méi)有空隙地貼牢

imode (9xx)

1.應(yīng)該總是getcolorbyrgb,不要想當(dāng)然的用0xff1234之類(lèi),可能異?;蛘邿o(wú)顏色

2.載入240*240更大的圖會(huì)出現(xiàn)圖片問(wèn)題

3.有時(shí)侯大圖片莫名其妙顯示不了

4.imode手機(jī)游戲必定涉及網(wǎng)絡(luò),必須正確處理網(wǎng)絡(luò)不可用的情況

5.usenetwork的值是http

6.usebrowser的值是launch,如果你需要打開(kāi)瀏覽器的話(huà)

7.在http通信時(shí)按通話(huà)鍵會(huì)切斷這個(gè)http連接

8.播放聲音時(shí)必須捕作異常,并在捕獲后重做前一步, 盡管它并不規(guī)定必須處理此異常

vodafone sharp

1.讀取寫(xiě)入rms慢. 不要在需要高速繪制時(shí)做

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
教你如何使用NOKIA開(kāi)發(fā)包
nokia內(nèi)存不足解決方法
諾基亞8配置逆天 6G內(nèi)存機(jī)皇強(qiáng)勢(shì)回歸
如何識(shí)別Java中的內(nèi)存泄漏
即使有GC機(jī)制,Java還是存在內(nèi)存泄露的問(wèn)題
【Java面試題第一期】有沒(méi)有jvm調(diào)優(yōu)經(jīng)驗(yàn)?調(diào)優(yōu)方案有哪些?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服