移动应用程序开发--高级用户界面与多线程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

高级用户界面与多线程LCDUI„高级LCDUILCDUI与多线程„多线程在手机编程中尤为重要{手机游戏开发中,通常由游戏主线程负责游戏的基本控制,除此之外还会由一个或者多个线程用于播放背景音乐或声效{网络接受数据时,传输速度通常都比较慢,因此可以使用一个独立的线程负责接收数据,另外一个线程负责UI界面和与用户的交互LCDUI与多线程„J2ME是通过线程体来实现多线程的。线程体就是用于实现线程活动的主体,由run()方法来实现„实现线程体的方法主要有:{(1)通过继承Thread类构造线程体{(2)通过实现Runnable接口构造线程体LCDUI与多线程—Thread类„除了实现Runnable接口外,CLDC包中还提供了通过继承Thread类来实现线程的方法,Thread类直接继承了Object类,可以用来实现一个具体的线程„构造方法{Thread();{Thread(Stringname);{Thread(Runnabletarget);{Thread(Runnabletarget,Stringname);LCDUI与多线程—Thread类„主要方法{start(),启动线程并转入就绪状态{run()定义线程被调度之后所执行的动作,系统自动调用,用户不得引用,由于Thread类的run()方法没有具体的内容,所以用户需要创建Thread类的子类,并定义新的run()方法{sleep():通常在run()方法中调用sleep()方法使自己放弃CPU资源{要停止线程往往通过标识符实现LCDUI与多线程—Thread类importjavax.microedition.MIDlet.*;importjavax.microedition.lcdui.*;publicclassmyMidletextendsMIDlet{…….publicvoidstartApp(){…….ThreadDemoth=newThreadDemo();th.start();…….}//添加类中类publicclassThreadDemoextendsThread{……publicvoidrun(){……}}…}LCDUI与多线程—Runnable接口„创建一个线程时必须实现Runnable接口,Runnable接口为实现多线程提供了通用的协议,使得对象被激活时可自动执行特定代码„实现Runnable接口必须实现其中的run()方法,run()方法是线程的主体,Run()方法中通常使用sleep()方法使线程“适当”休息,为其它线程让出CPU资源LCDUI与多线程—Runnable接口importjavax.microedition.MIDlet.*;importjavax.microedition.lcdui.*;publicclassmyMidletextendsMIDlet{…….publicvoidstartApp(){…….Threadth=newThread(newRunnableDemo());th.start();…….}//添加类中类publicclassRunnableDemoimplementsRunnable{……publicvoidrun(){……}}…}LCDUI与多线程—Runnable接口importjavax.microedition.MIDlet.*;importjavax.microedition.lcdui.*;publicclassmyMidletextendsMIDletimplementsRunnable{…….publicvoidstartApp(){…….Threadth=newThread(this);th.start();…….}//重写run()publicvoidrun(){……}…}实例1„在控制台循环打印字符串“hello”和“others”publicclassmyMidletextendsMIDlet{privateDisplaydis;privateFormfm=newForm(test);publicvoidstartApp(){dis=Display.getDisplay(this);dis.setCurrent(fm);myThreadmt1=newmyThread();Threadmt2=newThread(newmyRunable());mt1.start();mt2.start();}实例1publicclassmyThreadextendsThread{publicvoidrun(){while(true){System.out.println(hello);Thread.sleep(1000);}}}publicclassmyRunnableimplementsRunnable{publicvoidrun(){while(true){System.out.println(“others);Thread.sleep(1000);}}}…}实例1实例2„实例2:界面上有1个StringItem,要求它上面的数字每隔1秒钟变化publicclassMidletStringextendsMIDlet{privateDisplaydis;privateFormfm=newForm(Stringtest);privateStringItemsi=newStringItem(String1,);inti=0;publicvoidstartApp(){dis=Display.getDisplay(this);dis.setCurrent(fm);fm.append(si);myThreadth=newmyThread();th.start();}classmyThreadextendsThread{publicvoidrun(){while(true){si.setText(Integer.toString(i));i++;try{Thread.sleep(1000);}catch(Exceptionex){}}}}…}实例3„实例3:界面上有2个StringItem,要求第一个上面的数字每隔1秒钟变化,第二个上面的数字每隔2秒钟变化publicclassMidletStringextendsMIDlet{privateDisplaydis;privateFormfm=newForm(Stringtest);privateStringItemsi1=newStringItem(String1,);privateStringItemsi2=newStringItem(String2,);publicvoidstartApp(){dis=Display.getDisplay(this);dis.setCurrent(fm);fm.append(si1);fm.append(si2);myThread1th1=newmyThread1();th1.start();Threadth2=newThread(newmyThread2());th2.start();System.out.println(otherthings);}classmyThread1extendsThread{privateinti=0;publicvoidrun(){while(true){si1.setText(Integer.toString(i));i++;try{Thread.sleep(1000);}catch(Exceptionex){}}}}classmyThread2implementsRunnable{privateinti=0;publicvoidrun(){while(true){si2.setText(Integer.toString(i));i++;try{Thread.sleep(2000);}catch(Exceptionex){}}}…}实例4„秒表publicclassmidlet2extendsMIDletimplementsCommandListener{privateDisplaydis;privateFormfrm;privateCommandexit,ok,exitWatch,start,stop;privateWatchwatch;publicmidlet2(){frm=newForm(秒表);exit=newCommand(exit,Command.EXIT,1);ok=newCommand(ok,Command.OK,1);exitWatch=newCommand(exitwatch,Command.CANCEL,1);start=newCommand(start,Command.OK,1);stop=newCommand(stop,Command.STOP,1);}protectedvoidstartApp(){dis=Display.getDisplay(this);dis.setCurrent(frm);frm.addCommand(exit);frm.addCommand(ok);frm.setCommandListener(this);frm.append(争分夺秒);}publicvoidcommandAction(Commandc,Displayabled){Stringstr=c.getLabel();if(str.equals(ok)){watch=newWatch();watch.addCommand(exitWatch);watch.addCommand(start);watch.setCommandListener(this);dis.setCurrent(watch);}elseif(str.equals(start)){watch.removeCommand(start);watch.addCommand(stop);watch.startWatch();}elseif(str.equals(stop)){watch.removeCommand(stop);watch.addCommand(start);watch.stop();}elseif(str.equals(exitwatch)){dis.setCurrent(frm);}elseif(str.equals(exit)){this.notifyDestroyed();}}…}publicclassWatchextendsFormimplementsRunnable{privateTextFieldtext;privatebooleanflag;privateintcount=-1;publicWatch(){super();flag=true;text=newTextField(,,50,TextField.UNEDITABLE);this.append(text);}publicvoidstartWatch(){flag=true;text.setString();Threadth=newThread(this);th.start();}publicvoidstop(){flag=false;}publicvoidrun(){while(true){if(flag){count++;try{intms=count%10;ints=count/10%60;intm=s/60%60;inth=m/60;text.setString(h++m++s++ms);Thread.sleep(100);}catch(Exceptione){}}elsebreak;}}…}

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功