2005/10/31(月) [n年前の日記]
#4 [java] ShortTimerとThread
DoJa3.0で容量が違ってくるらしいので、それぞれの方法で動かすものを書いて実験。
eclipse 上から動か…すと容量がよくわからないのか。DoJa3.0のツールでビルド。最初は Thread のほうが容量が大きかったけど、考えてみれば e.printStackTrace(); とかそのへん最後には消していいのだろうな。ということで該当部分をコメントアウトしたら、わずかに thread のほうが少なくなった。
ちなみにこんな感じのソース。
ShortTimer 版。
Thread 版。
eclipse 上から動か…すと容量がよくわからないのか。DoJa3.0のツールでビルド。最初は Thread のほうが容量が大きかったけど、考えてみれば e.printStackTrace(); とかそのへん最後には消していいのだろうな。ということで該当部分をコメントアウトしたら、わずかに thread のほうが少なくなった。
ShortTimer | 1,423 byte |
Thread | 1,401 byte |
ちなみにこんな感じのソース。
ShortTimer 版。
import com.nttdocomo.ui.Canvas; import com.nttdocomo.ui.Display; import com.nttdocomo.ui.Graphics; import com.nttdocomo.ui.IApplication; import com.nttdocomo.ui.ShortTimer; public class IappliTestTimerA extends IApplication { private ShortTimer tm; public void start() { MyCanvas mc = new MyCanvas(); mc.setSoftLabel(MyCanvas.SOFT_KEY_2, "終了"); Display.setCurrent(mc); tm.start(); } class MyCanvas extends Canvas { int counter; public MyCanvas() { counter = 0; tm = ShortTimer.getShortTimer(this, 0, 100, true); } public void processEvent(int w_type, int w_param) { if ((w_type == Display.TIMER_EXPIRED_EVENT) && (w_param == 0)) { counter++; repaint(); } if ((w_type == Display.KEY_PRESSED_EVENT) && (w_param == Display.KEY_SOFT2)) { terminate(); } } public void paint(Graphics g) { g.lock(); g.clearRect(0, 0, getWidth(), getHeight()); if ((counter & 0x01) == 0) { g.drawString("test", 120, 120); } g.unlock(true); } } }
Thread 版。
import com.nttdocomo.ui.Canvas; import com.nttdocomo.ui.Display; import com.nttdocomo.ui.Graphics; import com.nttdocomo.ui.IApplication; public class IappliTestTimerB extends IApplication { public void start() { MyCanvas mc = new MyCanvas(); mc.setSoftLabel(MyCanvas.SOFT_KEY_2, "終了"); Display.setCurrent(mc); } class MyCanvas extends Canvas implements Runnable { private Thread tm; int counter; public MyCanvas() { counter = 0; tm = new Thread(this); tm.start(); } public void run() { while (true) { try { Thread.sleep(100); } catch (InterruptedException e) { // e.printStackTrace(); // break; } counter++; repaint(); } } public void processEvent(int w_type, int w_param) { if ((w_type == Display.KEY_PRESSED_EVENT) && (w_param == Display.KEY_SOFT2)) { terminate(); } } public void paint(Graphics g) { g.lock(); g.clearRect(0, 0, getWidth(), getHeight()); if ((counter & 0x01) == 0) { g.drawString("test", 120, 120); } g.unlock(true); } } }
[ ツッコむ ]
以上です。