关于J2ME低级界面和高级界面跳转死机问题!!十万火急!!!高手帮忙!!!
由于牵扯到发短信,需要由低级界面跳转到高级界面,由低跳高是正常,短信能发出去,发完要由高级跳回低级界面是出问题了,当跳回低级界面是就死机了,死在低级界面上了,按什么都没反应,只能关机重启手机,很郁闷。开始以为是内存爆了,内存溢出,可是也System.gc()了,该null的地方也null了,还是这问题。后来发现就是在界面跳转的时候死机的,各位高人,知不知道低级界面和高级界面之间跳转都有什么注意的,不小心会出什么问题,我这样的情况怎么解决!
重谢!!!!!!!代码如下:
public PoemCanvas(PoemMidlet midlet) {
logoi = 0;
g = null;
setFullScreenMode(true);
this.midlet = midlet;
canvasWidth = 176;
canvasHeight = 208;
getNum = "137xxxx9706";
try {
imgBack = Image.createImage("/back.png");
imgButton1 = Image.createImage("/button1.png");
} catch (IOException e) {
e.printStackTrace();
}
currentState = 1;
thread = new Thread(this);
thread.start();
}
protected void paint(Graphics g) {
this.g = g;
if (currentState != 5)
g.drawImage(imgBack, canvasWidth / 2, canvasHeight / 2, 0x1 | 0x2);
switch (currentState) {
default:
break;
case 1: // '\001'
if (logoi != 0) {
g.drawImage(imgButton1, (canvasWidth - imgButton1.getWidth())
/ 2 + logoi, (canvasHeight * 5) / 6, 0);
logoi = 0;
} else {
g.drawImage(imgButton1,
(canvasWidth - imgButton1.getWidth()) / 2,
(canvasHeight * 5) / 6, 0);
logoi = 1;
}
break;
case 2: // '\002'
g.drawImage(imgMenuBack,
(canvasWidth - imgMenuBack.getWidth()) / 2,
canvasHeight / 9, 0);
if (logoi != 0) {
g.drawImage(imgButton1, (canvasWidth - imgButton1.getWidth())
/ 2 + logoi, (canvasHeight * 5) / 6, 0);
logoi = 0;
} else {
g.drawImage(imgButton1,
(canvasWidth - imgButton1.getWidth()) / 2,
(canvasHeight * 5) / 6, 0);
logoi = 1;
}
g.setClip(0, 0, canvasWidth, imgMenuBack.getHeight());
g.drawImage(imgIntro, 0, playCount, 0);
if (playCount > 25)
playCount -= 3;
break;
case 3: // '\003'
g.drawImage(imgMenuBack,
(canvasWidth - imgMenuBack.getWidth()) / 2,
canvasHeight / 9, 0);
g.drawImage(imgButton2, (canvasWidth - imgButton2.getWidth()) / 2,
(canvasHeight - imgButton2.getHeight()) / 2 + 5, 0);
g.drawImage(imgButton3, x, y, 0);
g.drawImage(imgSignName,
(canvasWidth - imgSignName.getWidth()) / 2,
(canvasHeight - imgSignName.getHeight()) / 2 + 8, 0);
g.drawImage(imgExit, 0, canvasHeight - imgExit.getHeight(), 0);
g.drawImage(imgChoose, canvasWidth - imgChoose.getWidth(),
canvasHeight - imgChoose.getHeight(), 0);
break;
case 4: // '\004'
g.drawImage(imgCharge, (canvasWidth - imgCharge.getWidth()) / 2,
canvasHeight / 9, 0);
g.drawImage(imgGoBack, 0, canvasHeight - imgGoBack.getHeight(), 0);
g.drawImage(imgSend, canvasWidth - imgSend.getWidth(),
canvasHeight - imgSend.getHeight(), 0);
break;
}
}
protected void keyPressed(int keyCode) {
switch (currentState) {
case 5: // '\005'
default:
break;
case 3: // '\003'
switch (keyCode) {
case -7:
case -5:
switch (recentChoose) {
case 0: // '\0'
updateState(this.stateSend, this.stateMenu);
break;
case 1:
updateState(this.stateSend, this.stateMenu);
break;
case 2:
updateState(this.stateSend, this.stateMenu);
break;
case 3:
updateState(this.stateSend, this.stateMenu);
break;
case 4:
updateState(this.stateSend, this.stateMenu);
break;
case 5:
updateState(this.stateSend, this.stateMenu);
break;
}
break;
case 4: // '\004'
switch (keyCode) {
case -6:
updateState(this.stateMenu, this.stateSend);
break;
case -7:
case -5:
currentState = 5;
sendCommand = new Command("发送", 4, 1);
backCommand = new Command("返回", 7, 1);
massage = new TextField(null, null, 256, 0);
alert2 = new StringItem(null, "输入您要发送的内容(中文):", 0);
alert3 = new StringItem(null, "发送成功!", 0);
form = new Form("诗");
form.append(alert2);
form.append(massage);
form.addCommand(backCommand);
form.addCommand(sendCommand);
form.setCommandListener(this);
if(midlet.display==null)
midlet.display=Display.getDisplay(midlet);
Display.getDisplay(midlet).setCurrent(form);
break;
}
break;
}
}
public void run() {
do
try {
alertWin=new Alert(null,"短信发送成功,谢谢使用!",null,AlertType.WARNING);
if(midlet.display==null)
midlet.display=Display.getDisplay(midlet);
Display.getDisplay(midlet).setCurrent(alertWin);
isWin = false;
}
if (isNull) {
alertNull=new Alert(null,"对不起,短信不能为空!",null,AlertType.WARNING);
if(midlet.display==null)
midlet.display=Display.getDisplay(midlet);
Display.getDisplay(midlet).setCurrent(alertNull);
isNull = false;
}
Thread.sleep(100L);
repaint();
System.gc();
} catch (InterruptedException e) {
e.printStackTrace();
}
while (true);
}
public void commandAction(Command c, Displayable d) {
if (c == backCommand) {
if(midlet.display==null)
{
midlet.display=Display.getDisplay(midlet);
System.out.println("sdfsa");
}
Display.getDisplay(midlet).setCurrent(this);
updateState(this.stateMenu, this.stateSMS);
}
if (c == sendCommand)
{
getMassage = massage.getString();
if (getMassage.equals(""))// 如果用户输入的是空字符串
{
System.out.println("短信是空!");
this.updateState(this.stateNull, this.stateSend);
isNull = true;
}
else {
updateState(this.stateDo, this.stateSend);
(new Thread() {
public void run() {
isWin = SMSUtil.send(getMassage, getNum);
} }).start();
System.out.println(isWin);
}
}
if (c == backCommandNull) {
if(midlet.display==null)
midlet.display=Display.getDisplay(midlet);
// midlet.display.setCurrent(this);
Display.getDisplay(midlet).setCurrent(this);
updateState(this.stateSend, this.stateNull);
}
}
}
相关推荐
产教融合实训基地与实践中心建设逻辑图-可编辑版
产教融合实训基地与实践中心建设逻辑图-可编辑版
idea2025-free.zip
idea2025-free.zip
sop基于灵敏度分析的有源配电网智能软开关优化配置升级1(Matlab代码实现)
内容概要:本文提出了一种基于灵敏度分析的有源配电网智能软开关(SOP)优化配置方法,旨在应对高比例分布式电源接入带来的电压波动与网络损耗加剧等问题。研究以IEEE33节点系统为算例,通过改进的灵敏度分析模型量化各节点对电压和功率流动的影响程度,进而构建SOP选址与定容的优化模型,实现降低网损、改善电压分布及提升系统运行灵活性的目标。全文详细阐述了灵敏度指标的数学推导、目标函数与约束条件的建模过程,并基于Matlab实现了完整的仿真求解流程,具备良好的工程实用性与学术参考价值。; 适合人群:电力系统及其自动化、电气工程等相关专业的硕士博士研究生、科研机构研究人员,以及从事智能配电网规划、运行与优化的工程技术人员。; 使用场景及目标:①研究分布式电源大规模接入背景下配电网的主动调控与优化策略;②指导智能软开关在实际配电网中的科学选址与容量配置;③为相关科研课题提供可复现的仿真案例,支撑学术论文撰写与算法验证。; 阅读建议:建议读者结合提供的Matlab代码与IEEE33节点标准模型进行动手实践,重点理解灵敏度指标的物理意义及其在优化模型中的应用逻辑,关注求解过程中的约束设置与算法收敛性,并可进一步拓展至SOP与储能联合配置、多时间尺度优化等复杂场景进行二次开发与研究。
Ubuntu安装Latex
关于Ubuntu安装Latex的详细记录和排错指南
高校技术转移办公室人员在成果转化过程中,如何实现科技成果与产业需求的高效对接?.docx
高校技术转移办公室人员在成果转化过程中,如何实现科技成果与产业需求的高效对接?


J2ME
