我的midlet用于注册闹钟但是当我在诺基亚2680s-2上测试时,会发生这种情况;
当我通过按下具有退出命令的软键退出midlet时,midlet不会在所需的时间唤醒,这意味着警报时间未在推送注册表中注册。但是当我通过按下电源关/开键退出midlet时,电话会提示您在接受时是否要让midlet自动启动(SecurityException),注册midlet闹钟时间并自动启动。
我的commandAction侦听器按如下方式处理exit命令:
if (command == myExit)
{
notifyDestroyed();
}
警报注册在destroyApp()中处理,如下所示:
public void destroyApp(boolean unconditional)
{
notifyDestroyed();
try
{
setMidletWakeupTime(someTimeValueAsLong);
}
catch(ClassNotFoundException cnfe)
{
}
catch(ConnectionNotFoundException cnfe)
{
}
catch(SecurityException se)
{
}
}
setMidletWakeupTime函数代码如下:
public void setMidletWakeupTime(long wakeupTime)
throws ClassNotFoundException, ConnectionNotFoundException,
SecurityException
{
String className = this.getClass().getName();
PushRegistry.registerAlarm(className, wakeupTime);
}