mieki256's diary



2005/10/31(月) [n年前の日記]

#4 [java] ShortTimerとThread

DoJa3.0で容量が違ってくるらしいので、それぞれの方法で動かすものを書いて実験。

eclipse 上から動か…すと容量がよくわからないのか。DoJa3.0のツールでビルド。最初は Thread のほうが容量が大きかったけど、考えてみれば e.printStackTrace(); とかそのへん最後には消していいのだろうな。ということで該当部分をコメントアウトしたら、わずかに thread のほうが少なくなった。
ShortTimer1,423 byte
Thread1,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);
        }
    }
}

以上です。

過去ログ表示

Prev - 2005/10 - Next
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project