博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Nokia 中的暂停功能

Posted on 2005-10-03 18:08    阅读(474)  评论(0编辑  收藏  举报
有时,MIDlet 的自动暂停功能非常实用。例如,所有可能的系统通告能够在MIDlet 之上显示,从而
把MIDlet 隐藏在后台。
MIDP 规范规定,如果系统需要大量设备资源,系统能把MIDlet 设为暂停状态(方法pauseApp)。
在暂停状态下,MIDlet 能够释放其所有资源。目前可用的Series 40、60 和90 设备具有足够的运行
能力和内存,故它们不需要进入暂停状态。这意味着开发人员必须创建自己的暂停机制。
Forum.Nokia.com
Developer Platforms: J2METM 应用软件测试指南 12
换句话说,在MIDlet 交互期间,如果发生下列事件之一,开发人员必须创建一个方法来暂停一个激
活会话.
• 屏幕上显示一个系统通告(例如,有电话呼入、电量已满或过低)。
• 用户按下红色拨号键、电量键(Series 40 设备中不存在)或设备的应用键。
• 应用软件的主屏幕被系统菜单隐藏,或者其它应用软件设置为前台运行(Series 40 设备中不存
在该情况)。
实际上,当MIDlet 隐藏时,它总是处于暂停状态。这在游戏应用软件中尤其重要,因为,如果在游
戏被隐藏时没有立刻暂停,游戏者可能会输掉游戏。
可以用类Displayable 的方法isShown()或者类Canvas 或CustomItem 的方法 hideNotify() 来暂
停MIDlet。
所有用户界面(UI)组件都继承自类Displayable。因此,可以用方法isShown()测试一个UI 组件
是否可见。如果UI 组件由于某种原因被隐藏,可通过反复请求方法isShown()获得信息。方法
isShown()可以用于高级UI 组件,如Form 或 List,但是对于继承自类Canvas 的低级UI 组件,最
好使用其专有的方法hideNotify() 和 showNotify()。
在Canvas 对象离开显示屏后,方法hideNotify()将被立刻调用。在方法hideNotify()中创建
一个自动暂停机制,用来暂停线程、关闭计时器、保存重要数值等。参见下面的代码范例:
protected void hideNotify()
{
//执行暂停时的操作
remainingTime = endTime – System.currentTimeMillis();
myThread.stop();
autoPaused = true;
repaint();
// Include a pause test in paint() method to check if paused
// paint a pause message on screen if autoPaused true
}
protected void paint(Graphics g)
{
// paint game screen here
if (autoPaused == true) {
// paint pause message
}
}
暂停之后的操作是继续,故需要把Continue 选项显示给用户。例如,Continue 选项可以是应用软件
主菜单的一个条目。
检查以下各项:
• 发生任何中断时,能够暂停应用软件。
• 如果MIDlet 被隐藏,它能自动暂停。
• 在中断后,可以选择继续运行应用软件。