一个简单测试showNotify和hideNotify的程序,但不明白结果为何这样
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class Test extends MIDlet
{
Display display;
public Test()
{
super();
}
protected void startApp() throws MIDletStateChangeException
{
MyCanvas canvas = new MyCanvas();
display = Display.getDisplay(this);
display.setCurrent(canvas);
}
protected void pauseApp()
{
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException
{
}
}
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
public class MyCanvas extends Canvas implements Runnable
{
public int x;
public boolean b = true;
public Thread thread;
public void showNotify()
{
thread = new Thread(this);
thread.start();
}
public void hideNotify()
{
System.out.println("****");
b=false;
}
protected void paint(Graphics g)
{
g.setColor(0xffffff);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(0x000000);
g.drawString("hello",x+10,10,0);
}
public void run()
{
Thread cur = Thread.currentThread();
while(b && thread == cur)
{
System.out.println(x);
x++;
repaint();
try
{
Thread.sleep(500);
}catch(Exception e)
{
e.printStackTrace();
}
}
}
}
点模拟器的pause后结果如下:
0
1
2
3
4
****
再resume,所有打印信息如下:
0
1
2
3
4
****
****
0
1
2
3
有两点疑问
1.showNotify方法调用后,程序会自动初始话全局变量吗?为什么x又从0开始计数了。
2.为什么调用showNotify方法后,程序还会自动调用一次hideNotify方法,将****打印一遍。