惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
博客园 - 司徒正美
D
DataBreaches.Net
J
Java Code Geeks
月光博客
月光博客
MyScale Blog
MyScale Blog
博客园 - Franky
Jina AI
Jina AI
量子位
博客园 - 聂微东
博客园 - 叶小钗
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
博客园 - 【当耐特】
Blog — PlanetScale
Blog — PlanetScale
I
InfoQ
小众软件
小众软件
B
Blog RSS Feed
Hugging Face - Blog
Hugging Face - Blog
博客园_首页

博客园 - 磊

淘宝店铺开业送优惠券 报表统计查询 Word 发布测试 【原创】hibernate中delete的一点见解 关于23种设计模式的有趣见解[转] 用Visual C#调用Windows API函数 DataGrid,GridView和DetailsView中添加删除确认提示 2.0新控件 Localize ASP.NET直接下载一个文件 - 磊 - 博客园 dFastlog.dll错误和数据库连接错误的解决办法 "Automation 服务器不能创建对象" 的解决方法 - 磊 "FSO"的禁用与启用 如何做最简单的url跳转 我的主页 更换SQL对象属主的方法 如何在WinXP中批量修改文件名? 利用Forms实现两种不同验证系统 Froms验证 改版网站真麻烦
Nokia 中的暂停功能
· 2005-10-03 · via 博客园 - 磊

Posted on 2005-10-03 18:08    阅读(497)  评论()    收藏  举报

有时,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 被隐藏,它能自动暂停。
• 在中断后,可以选择继续运行应用软件。