|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。论证 本文次要论述的成绩是,在J2ME开辟中事务传输究竟是甚么机制。次要环绕Canvas类事务传输的串行化举行剖析和研讨,经由过程实例举行论证并在最初得出结论。
经由过程参考Javadoc我们能够晓得在J2ME中的事务传输是串行化的,那末甚么是串行化呢?javadoc内里说当一个工夫办法挪用完成以后,上面的事务办法才会被挪用。如许能够包管用户的前次输出已被完成了,下次的事务输出才会失掉呼应。起首我们来看看那些办法是所谓的事务办法。在MIDP中列出了以下的办法:
showNotify()
hideNotify()
keyPressed()
keyRepeated()
keyReleased()
pointerPressed()
pointerDragged()
pointerReleased()
paint()
theCommandListenerscommandAction()method
我们针对上述串行化的了解不防做一下如许的假定,当showNotify()办法被挪用的时分,假如在外部界说了repaint()办法,则会哀求体系对屏幕举行从头的绘制,这会挪用到paint()办法。接上去我们完成keyPressed()办法,让它把按键的名字打印在屏幕上。为了摹拟串行化的效果,我们在每一个办法中都让以后的线程就寝2000ms,假如事务切实其实是串行化的机制,那末程序必定会断断续续的画出我们的按键名。为了论证我们的假想,我编写了上面的一段代码。
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
publicclassKeyCodesextendsMIDlet
{
privateDisplaydisplay;
privateKeyCodeCanvascanvas;
publicKeyCodes()
{
display=Display.getDisplay(this);
canvas=newKeyCodeCanvas(this);
}
protectedvoidstartApp()
{
display.setCurrent(canvas);
}
protectedvoidpauseApp()
{
}
protectedvoiddestroyApp(booleanunconditional)
{
}
publicvoidexitMIDlet()
{
destroyApp(true);
notifyDestroyed();
}
}
classKeyCodeCanvasextendsCanvasimplementsCommandListener
{
privateCommandcmExit;
privateStringkeyText="helloletsgo!";
privateKeyCodesmidlet;
publicKeyCodeCanvas(KeyCodesmidlet)
{
this.midlet=midlet;
cmExit=newCommand("Exit",Command.EXIT,1);
addCommand(cmExit);
setCommandListener(this);
}
protectedvoidpaint(Graphicsg)
{
System.out.println("Iaminvoked!");
g.setColor(0,255,0);
g.fillRect(0,0,getWidth(),getHeight());
if(keyText!=null)
{
g.setColor(0,0,0);
g.drawString(keyText,getWidth()/2,getHeight()/2,Graphics.TOP
|Graphics.HCENTER);
}
}
publicvoidshowNotify()
{
repaint();
try
{
Thread.sleep(2000);
}
catch(InterruptedExceptione)
{
}
}
publicvoidcommandAction(Commandc,Displayabled)
{
if(c==cmExit)
midlet.exitMIDlet();
}
protectedvoidkeyPressed(intkeyCode)
{
keyText=getKeyName(keyCode);
repaint();
try
{
Thread.sleep(2000);
}
catch(InterruptedExceptione)
{
}
}
}
编译,运转。我们看到当Canvas被显现在屏幕上的时分,showNotify()办法起首被挪用,它的repaint()办法被挪用后,并非屏幕即刻会被绘制。而是要等两秒的工夫,showNotify()办法前往后,paint()办法才入手下手实行。在这两秒的工夫,即便你按键屏幕一样不会从头绘制,相反你的按键事务会被缓存到一个行列,一个一个的被渐渐的绘制出来。上面是程序的截图,供参考
在Canvas类的javadoc中有一个备注申明了一些值得存眷的成绩,好比serviceRepaints()办法会强制任何挂起的绘画哀求立即被实行,showNotify()和hideNotify()办法利用的一些注重等,读者能够参考javadoc懂得进一步的内容。
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。 |
|