深入牛
发布时间:2021-09-06 10:11:37
当MIDIet程序运行时出现错误的时候,应用程序管理器(application manager)会发出这个异常(exception). 在MIDIet类中也有两个方法可以发出这个异常(exception): destroyApp()和startApp().
下面是一个捕捉和发送例外的例子。这个简单的MIDIet显示一个FORM和一个关闭程序的按钮(显示EXIT).
创建这个例子的时候,我们会有这个问题:当按下关闭按钮或者应用程序管理器(application manager)要关闭这个MIDIet的时候,如果MIDIet正在下载程序,会发生什么情况?我们可以抛出异常(exception)而不是马上关闭程序。也就是说,下载请求不应在此时被关闭。应用程序管理器会在以后重试。
这个例子如何工作:当使用者第一次按下EXIT按钮,我们调用destroyApp(false)方法。这里传入参数false告诉方法这个请求不是无条件的,而且我们将会抛出MIDIetStateException异常.这个异常(exception)会在commandAction()里被捕捉到,同时会设置一个标志,这个标志意味着我们将可以关闭程序. 这样,当我们再一次按下EXIT按钮的时候。MIDIet将要继续运行直到EXIT按钮第二次被按下。
注意:以下例子基于MIDP和CLDC 1.0.3.
1. JAVA源代码:
/*----------------------------------------------------
* a look inside MIDletStateChangeException and the
* destroyApp() method
*
*
*---------------------------------------------------*/
import dlet.*;
import dui.*;
public class ExceptionTest extends MIDlet implements CommandListener
{
private Display display; // Reference to Display object
private Form frmMain; // A Form
private Command cmdExit; // A Command to exit the MIDlet
private boolean safeToExit = false; // Is it safe to exit the MIDlet?
public ExceptionTest()
{
display = tDisplay(this);
cmdExit = new Command(\"Exit\", REEN, 1);
frmMain = new Form(\"Test Exception\");
dCommand(cmdExit);
tCommandListener(this);
}
// Called by application manager to start the MIDlet.
public void startApp()
{
tCurrent(frmMain);
}
// We are about to be placed in the Paused state
public void pauseApp()
{
}
// We are about to enter the Destroyed state
public void destroyApp(boolean unconditional) throws MIDletStateChangeException
{
intln(\"Inside destroyApp()\");
// If we do not need to unconditionally exit
if (unconditional == false)
{
intln(\"Requesting not to be shutdown\");
用小王子的星空漫游记给我们一场治愈心灵之旅。 throw new MIDletStateChangeException(\"Please don\'t shut me down.\");
}
}
// Check to see if the Exit command was selected
public void commandAction(Command c, Displayable s)
{
if (c == cmdExit)
{
try
{
// Is it ok to exit?
if (safeToExit == false)
destroyApp(false);
else
{
destroyApp(true);
notifyDestroyed();
}
}
catch (MIDletStateChangeException excep)
{
safeToExit = true; // Next time, let\'s exit
intln(tMessage());
intln(\"Resuming the Active state\");
}
}
}
}
查看本文来源
合肥治疗白癜风多少钱西安妇科权威医院
银川哪医院男科好
- 上一页:深信服完成首度融资兰馨亚洲万入股覆盖
- 下一页:深入的提供者模型呢