关于unconditional

在active状态调用destroyApp(boolean unconditional)或者pauseApp()方法可以使得MIDlet进入destroyed或者pause状态。值得一提的是destroyApp(boolean unconditional)方法,很多开发者对unconditional参数不是很理解,事实上,当destroyApp()方法被调用的时候,AMS通知MIDlet进入destroyed状态。在destroyed状态的MIDlet必须释放了所有的资源,并且保存了数据。如果unconditional为false的时候,MIDlet可以在接到通知后抛出MIDletStateChangeException而保持在当前状态,如果设置为true的话,则必须立即进入destroyed状态。--mingjava的专栏

destroyXlet(boolean unconditional)

  该方法通知Xlet结束运行,转入拆除状态。Xlet应当释放所有的资源。参数unconditional由管理器设置,表示是否要无条件地拆除Xlet。如果unconditional是false,Xlet可以抛出一个StateChangeException异常,表示自己不想被拆除——但是,是否接受Xlet请求最终还是由管理器决定。也就是说,虽然Xlet有权合法地抛出StateChangeException异常,但最终决定其命运的还是管理器。如果管理器接受了Xlet要求不拆除的请求,它会给Xlet一些时间,一定的时间后再次调用destory()方法,这次unconditional一般会设置成true。当unconditional参数是true时,管理器将忽略任何XletStateChangeException异常,一旦destoryXlet()返回就直接拆除Xlet。

  可以从生命周期方法抛出的异常有两种:XletStateChangeException,未被捕获的RuntimeException或错误。

  如果生命周期方法抛出了未处理的RuntimeException或错误,管理器将立即调用Xlet的destoryXlet(true)方法,将Xlet拆除。因此,Xlet应当捕获所有“正常的”(原因已知的)RuntimeException或错误,避免将RuntimeException直接抛给管理器从而导致Xlet被拆除。相对而言,XletStateChangeException可以由Xlet有意地抛出,表示Xlet尚未做好改变状态的准备。 --赛迪网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值