corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

可视 Mobile 设计器定制组件:为 Mobile 应用程序创建等待屏幕

Java ME 应用程序通常需要连接到网络才能正常运行。不幸的是,无线网络的速度仍然较慢。后台任务等待网络连接或数据传输时会导致应用程序暂停,这样用户便会怀疑屏幕是否冻结,或是否需要中止并稍后重试(或不再重试)。那么,开发者是如何帮助用户消除这一不愉快但又很常见的体验呢?

答案就是添加一个“等待屏幕”。利用等待屏幕,用户可以执行后台任务(例如,与网络建立连接),并且可以在屏幕上显示任务的执行进度或消息,以此来通知用户应用程序仍在继续运行。在本教程中,我们将介绍可视 Mobile 设计器 (Visual Mobile Designer, VMD) 如何通过添加等待屏幕定制组件来简化等待屏幕的创建过程,您可以定制等待屏幕组件并将其添加到应用程序流中。

如果您对在 NetBeans 中开发 Mobile 应用程序不熟悉,则应首先阅读 NetBeans Java ME MIDP 快速入门指南,然后再继续学习本教程。

注意:如果使用的是 NetBeans IDE 6.8,请参阅在 NetBeans IDE 6.8 中创建 Mobile 应用程序的等待屏幕教程。

目录

本页上的内容适用于 NetBeans IDE 6.9 或 7.0

要学完本教程,您需要具备以下软件和资源:

软件或资源 要求的版本
带有 Java ME 的 NetBeans Beans 版本 6.9 或更高版本
Java Development Kit (JDK) 版本 6

waitScreen 组件的工作方式

为等待屏幕组件创建后台任务有两种方法。可以编写一个实现 CancellableTask 接口的类,也可以只使用 SimpleCancellableTask 资源。您可以使用 setTask() 方法为等待屏幕指定后台任务。

在完成后台任务之后,等待屏幕组件会自动切换至其他可显示对象。如果任务成功完成,等待屏幕将切换至 setNextDisplayable() 方法所提供的显示对象。如果任务失败,等待屏幕将切换至 setFailureDisplayable() 方法所提供的显示对象。如果未设置失败时可显示的缺省对象,等待屏幕将切换至 setNextDisplayable() 方法所指定的显示对象。如果未指定下一个可显示的屏幕,等待屏幕将切换回之前所显示的屏幕。

请注意,此组件仅可用于支持 MIDP 2.0 设备配置文件的应用程序。

返回页首

安装并运行样例应用程序

开始之前,您可能希望查看本教程的最终结果。

请执行下列步骤以安装 waitscreenexample 样例应用程序:

  1. 下载 WaitScreenExample.zip
  2. 解压缩该文件。
  3. 在 IDE 中,选择“文件”>“打开项目”,然后浏览到包含解压缩文件的文件夹。
  4. 单击“打开项目”。
    “项目”视图应如下所示:
  5. 包含 WaitScreenExample 文件的“项目”窗口

  6. 在“项目”窗口中,右键单击项目节点,然后选择“运行”(或按 F6 键)。当应用程序运行时,将会打开一个仿真器窗口,其中显示了在缺省设备仿真器中运行的应用程序。
  7. 在仿真器窗口中,单击 "Launch" 下面的按钮。仿真器将显示 NetBeans Web 站点的 URL 地址:http://netbeans.org。
  8. 单击 "Ok" 下面的按钮。屏幕将询问您是否记录通话时间。
  9. 单击 "Yes" 下面的按钮以继续。当仿真器尝试连接至该 Web 站点时,仿真器将显示等待屏幕。

    显示样例等待屏幕应用程序的 DefaultColorPhone 仿真器

  10. 在仿真器建立连接后,关闭应用程序。

返回页首

使用等待屏幕定制组件创建 Mobile 应用程序

现在,您已看到运行中的等待屏幕组件,接下来让我们开始创建此应用程序。要创建此应用程序,请执行以下操作:

  1. 创建 WaitScreenExample 项目
  2. 在 MyWaitScreen 项目中添加包和 Visual MIDlet
  3. 在 MyWaitScreenMIDlet 中添加组件
  4. 添加图像资源
  5. 在 textBox 和 waitScreen 组件中添加确定、返回和退出命令
  6. 创建应用程序流
  7. 为等待屏幕创建后台任务
  8. 运行项目

注意:在创建此项目之前,请确保关闭或删除在上述步骤中运行的样例 WaitScreenExample 项目。NetBeans IDE 不允许同时打开同名项目。

创建 WaitScreenExample 项目

  1. 选择“文件”>“新建项目 (Ctrl-Shift-N)”。在“类别”下,选择 "Java ME"。在“项目”下,选择“Mobile 应用程序”,然后单击“下一步”。
  2. 在“项目名称”字段中输入 WaitScreenExample。将“项目位置”更改为系统中的某个目录。我们将此目录称为 $PROJECTHOME
  3. 取消选中“创建 Hello MIDlet”复选框。单击“下一步”。
  4. 将 "Sun Java Wireless Toolkit 2.5.2" 保留为选定的仿真器平台。单击“完成”。

在 WaitScreenExample 项目中添加包和 Visual MIDlet

  1. 在“项目”窗口中选择 WaitScreenExample 项目,然后选择“文件”>“新建文件 (Ctrl-N)”。在“类别”下选择 "Java"。在“文件类型”下,选择“Java 包”。单击“下一步”。
  2. 在“包名”字段中输入 waitscreenexample。单击“完成”。
  3. 在“项目”窗口中选择 waitscreenexample 包,然后选择“文件”>“新建文件 (Ctrl-N)”。在“类别”下,选择 "MIDP"。在“文件类型”下,选择 "Visual MIDlet"。单击“下一步”。
  4. 分别在“MIDlet 名称”字段和“MIDP 类名”字段中输入 MyWaitScreenMidlet。单击“完成”。

在 MyWaitScreenMidlet 中添加组件

选择 Visual MIDlet 以打开可视 Mobile 设计器 (Visual Mobile Designer, VMD)。单击 VMD 窗口顶部的“流”视图可打开流设计器,您将在其中设计应用程序流。

  1. 将 Visual MIDlet 切换至“流”视图。将以下屏幕组件从组件面板拖放至流设计器中:
    • 文本框
    • 等待屏幕
    • 列表
    • 警报
  2. 选择 "textBox"。在“属性”窗口(位于组件面板下方)中,将其“标题”属性更改为 Text Box
  3. 采用相同的操作步骤更改以下组件的“标题”属性:
    • waitScreen 更改为 Wait Screen
    • list 更改为 List
    • alert 更改为 Alert
  4. 对于以下各个组件,请使用这些属性值:
    • textBox 的“文本”属性更改为 http://netbeans.org
    • alert 的“字符串”属性更改为 Connection Failed
    • waitScreen 的“文本”属性更改为 Please Wait...

“流”视图应如下图所示:

包含组件图标的“流”视图

添加图像资源

在此部分,您将添加等待屏幕和警报屏幕所使用的图像。

  1. 下载 alert.pngsandglass.png 文件,并将其复制到 $PROJECTHOME/src/waitscreenexample 文件夹中。
  2. 右键单击 alert 组件,然后在弹出式菜单中选择“属性”。
  3. 在“属性”对话框中,单击“图像”属性的省略号按钮 (省略号按钮)。
  4. 在“属性”对话框中,单击“添加”。
    将添加 image1 组件。
  5. 单击“浏览”,然后在“打开”对话框中指定复制的 alert.png 文件的路径。
  6. 单击“打开”。
    将添加该图像。
  7. 单击“确定”以关闭“图像”对话框。
  8. 单击“关闭”以关闭“属性”对话框。
    alert.png 图像将绑定到 alert 组件。
  9. 对于 waitScreen 组件,重复步骤 2 至 8,将 sandglass.png 添加为 image2,然后将其绑定到该组件。

在 textBox 和 waitScreen 组件中添加确定、返回和退出命令

  1. 从组件面板的“命令”类别中选择“确定命令”。将其拖放至 textBox 中。
  2. 从组件面板的“命令”类别中选择“返回命令”。将其拖放至 list 中。
  3. 从组件面板的“命令”类别中选择“退出命令”。将其拖放至 list 中。

创建应用程序流

现在,您可以创建应用程序流了。

  1. 在“流”视图中,单击“移动设备”上的“已启动”,然后将其拖至 textBox 组件上。
  2. 采用相同的方法,按照下图所示连接各个组件。

    流设计器屏幕中的组件是按以下方式连接的:移动设备 - textBox1 - waitScreen1 - list - 移动设备。失败命令连接至 alert,然后再连接至 list

为等待屏幕创建后台任务

  1. 在“流”视图中,右键单击 waitScreen 组件,然后从弹出式菜单中选择“属性”。
  2. 在“属性”对话框中,从“任务”下拉菜单中选择 "<NewCancellableTask>",然后单击“关闭”。
    现在,simpleCancellableTaskwaitScreen 组件的后台任务。
  3. 在可视 Mobile 设计器的顶部,单击“源”按钮以切换到应用程序源代码。
  4. 将以下代码粘贴到 MyWaitScreenMIDlet 源代码的 public void destroyapp(boolean unconditional) { } 后面,为该后台任务添加一个方法:
  5.       private void getServerInfo() throws IOException {
          String url = textBox.getString();
          list.deleteAll();
          /**
          * Open an HttpConnection
          */ 
          HttpConnection hc = (HttpConnection) Connector.open(url);
    
          /**
          * Gets a header field key and header field by index and
          * insert it into list.
          */
          list.setTitle(hc.getURL());   
          for (int i=0;hc.getHeaderFieldKey(i)!=null; i++){
          list.insert(i,hc.getHeaderFieldKey(i)+" :"+hc.getHeaderField(i),null);       
          }     
          /**
          * Closing time ...
          */
          hc.close();
          } 
    
  6. 在源代码中单击鼠标右键,然后在弹出式菜单中选择“修复导入”(或者,也可以按 Ctrl+Shift+I 组合键)。
  7. 查找 public class MyWaitScreenMidlet extends MIDlet implements CommandListener { 字符串(第 18 行),然后插入 final 以使其如下所示:
  8.  public final class MyWaitScreenMidlet extends MIDlet implements CommandListener {
  9. 在源代码(第 38 行)中查找 public MyWaitScreenMidlet() 方法,然后在 public MyWaitScreenMidlet() { 后面插入以下代码:
  10.  List list1 = getList();
  11. 单击“屏幕”以切换到“屏幕”视图,然后选择 "simpleCancellableTask"。
  12. 在“属性”窗口中,单击“可执行代码”属性的省略号按钮 (省略号按钮)。
  13. 在“可执行代码”对话框中,单击“转至源”。
  14. 在源代码(第 328 行)中查找 getSimpleCancellableTask() 方法,然后将以下代码插入到 public void execute() throws Exception {(显示的内容为 // write task-execution user code here)后面:
  15.  getServerInfo();

运行项目

按 F6 键以运行主项目。

或者,也可以选择“运行”>“运行主项目”。

返回页首

waitScreen 和 simpleCancellableTask 组件的 Javadoc

NetBeans IDE 提供 waitScreensimpleCancellableTask 组件以及可以在 VMD 中使用的其他组件的 API Javadoc。要阅读 waitScreensimpleCancellableTask 组件的 Javadocs,请完成以下步骤:

  1. 将光标放在源代码中的 waitScreensimpleCancellableTask 组件上,然后按 Ctr-Shift-空格键(或选择“源”>“显示文档”)。
    将在弹出式窗口中显示该元素的 Javadoc。
  2. 在弹出式窗口中单击“在外部 Web 浏览器中显示文档”图标 (在外部 Web 浏览器中显示文档),以查看有关浏览器中的 waitScreensimpleCancellableTask 组件的详细信息。

返回页首



另请参见

返回页首