Особые компоненты Visual Mobile Designer: создание экранов ожидания для мобильных приложений

Для правильной работы приложений Java ME зачастую необходимо подключение к сети. К сожалению, скорость передачи данных в беспроводных сетях пока еще довольно мала. Любая фоновая задача, ожидающая подключения к сети или передачу данных, может приостановить выполнение приложения и оставить пользователей в недоумении, если на экране все застынет на неопределенное время или, если им придется отменять попытку подключения и повторять ее позже (или не повторять вовсе). Поэтому у разработчиков возникает вопрос, как избавить пользователей от этого неприятного, но распространенного явления.

Ответ – добавьте экран ожидания. Экраны ожидания позволяют пользователям выполнять блокирующую фоновую задачу (например, подключение к сети) и показывают процесс выполнения задачи или выводят на экран сообщение, информирующее пользователя о том, что приложение все еще выполняется. В этом руководстве мы покажем, как Visual Mobile Designer (VMD) упрощает создание экранов ожидания за счет включения специального компонента экрана ожидания, который можно модифицировать и включать в последовательность действий приложения.

Если вы ранее не разрабатывали мобильные приложения в среде NetBeans, начните с изучения Краткого руководства пользователя по NetBeans Java ME MIDP.

Содержание

Содержимое данной страницы относится к среде IDE NetBeans 6.9 и более поздним версиям

Для работы с этим учебным курсом требуются программное обеспечение и ресурсы, перечисленные ниже.

Программное обеспечение или ресурс Требуемая версия
Среда IDE NetBeans с Java ME версия 6.9 или более поздняя
Комплект для разработки приложений на языке Java (JDK) версия 6 или 7

Как работает компонент WaitScreen

Существует два метода создания фоновых задач для компонента WaitScreen. Можно написать класс, реализующий интерфейс CancellableTask, или использовать ресурс SimpleCancellableTask. Фоновые задачи присваиваются экрану ожидания с помощью метода setTask().

Когда фоновая задача выполнена, компонент WaitScreen автоматически переключается на другой отображаемый объект. При успешном выполнении задачи экран ожидания переключается на экран, определяемый методами setNextDisplayable(). Если задача не выполнена, экран ожидания переключается на экран, определяемый методами setFailureDisplayable(). Если информация о сбое не должна выводиться на экран по умолчанию, экран ожидания переключается на экран, определяемый методом setNextDisplayable(). Если следующий экран для отображения не указан, экран ожидания переключается на ранее отображавшийся экран.

Обратите внимание, что этот компонент доступен для приложений, поддерживающих только профиль устройства MIDP 2.0.

В начало

Установка и выполнение примера приложения

Перед тем, как приступить к учебному курсу, можно ознакомиться с окончательным результатом этой работы.

Для установки примера приложения "waitscreenexample" выполните следующие действия.

  1. Загрузите WaitScreenExample.zip.
  2. Распакуйте файл.
  3. В среде IDE выберите File > Open Project и перейдите к папке, содержащей распакованный файл.
  4. Нажмите кнопку "Open Project".
    Представление "Project" должно выглядеть следующим образом:

    Окно "Проект"("Project") с файлами WaitScreenExample

  5. В окне "Проект" щелкните узел проекта правой кнопкой мыши и выберите "Выполнить" в контекстном меню (или нажмите клавишу F6). После запуска приложения откроется окно эмулятора, в котором отображается это приложение, выполняющееся в эмуляторе устройства по умолчанию.
  6. В окне эмулятора нажмите кнопку под элементом "Launch." Эмулятор выведет на экран URL-адрес веб-сайта среды NetBeans: http://netbeans.org.
  7. Нажмите кнопку под элементом "OK". На экране появится запрос о том, действительно ли вы хотите выйти в Интернет.
  8. Для продолжения нажмите кнопку под элементом "Yes". Пока эмулятор пытается установить подключение к веб-сайту, он отображает экран ожидания.

    Эмулятор DefaultColorPhone, отображающий пример приложения экрана ожидания

  9. После того, как эмулятор установит подключение, закройте приложение.

В начало

Создание мобильного приложения с использованием особого компонента WaitScreen

Теперь, после ознакомления с компонентом WaitScreen, вернемся к началу и создадим данное приложение. Для создания приложения необходимо выполнить следующие действия.

  1. Создание проекта "WaitScreenExample"
  2. Добавление пакетов и визуального мидлета к проекту "WaitScreenExample"
  3. Добавление компонентов к проекту "MyWaitScreenMIDlet"
  4. Добавьте изображения.
  5. Добавление команд Ok, Back и Exit к компонентам TextBox и WaitScreen
  6. Создайте поток операций приложения.
  7. Создайте фоновую задачу для экрана ожидания.
  8. Запустите проект.

Примечание. Перед созданием данного проекта не забудьте закрыть или удалить образец проекта WaitScreenExample, запущенный выше. В среде IDE NetBeans невозможно одновременно открыть проекты с идентичными именами.

Создание проекта "WaitScreenExample"

  1. Выберите File ("Файл") > New Project ("Создать проект") (Ctrl-Shift-N). В Categories ("Категории") выберите Java ME. В области Projects ("Проекты") выберите Mobile Application ("Мобильное приложение") и нажмите кнопку "Далее".
  2. Введите WaitScreenExample в поле Project Name ("Имя проекта"). В поле "Project Location" укажите локальный каталог. Мы называем этот каталог $PROJECTHOME.
  3. Снимите флажок "Create Hello MIDlet". Нажмите кнопку Next ("Далее").
  4. Оставьте "Sun Java Wireless Toolkit 2.5.2" в качестве выбранной платформы эмулятора. Нажмите кнопку Finish ("Готово").

Добавление пакетов и визуального мидлета к проекту "WaitScreenExample"

  1. Выберите проект WaitScreenExample в окне проектов и выберите File ("Файл") > New File (Ctrl-N) ("Создать файл"). В области "Категории" выберите "Java". В разделе "Типы файлов" выберите "Java Package". Нажмите кнопку "Далее".
  2. Введите waitscreenexample в поле Package Name ("Имя пакета"). Нажмите кнопку Finish ("Готово").
  3. Выберите пакет waitscreenexample в окне проектов и выберите File ("Файл") > New File (Ctrl-N) ("Создать файл"). В разделе "Категории" выберите "MIDP". В разделе "Типы файлов" выберите "Visual MIDlet". Нажмите кнопку "Далее".
  4. Введите MyWaitScreenMidlet в поля "MIDlet Name" и "MIDP Class Name". Нажмите кнопку "Готово".

Добавление компонентов к проекту "MyWaitScreenMidlet"

При выборе пункта "Visual MIDlet" откроется редактор Visual Mobile Designer (VMD). При выборе представления "Flow" вверху окна VMD будет открыт Flow Designer, в котором можно спроектировать последовательность действий приложения.

  1. Переключите визуальный мидлет на представление "Flow". Перетащите следующие компоненты "Screen" из окна "Palette" в окно "Flow Designer":
    • TextBox;
    • WaitScreen;
    • List;
    • Alert.
  2. Выберите textBox. В окне "Properties" (под окном "Component Palette") измените свойство "Title" на Text Box.
  3. Используйте ту же самую процедуру для изменения заголовков следующих компонентов:
    • Смените waitScreen на Wait Screen
    • Смените list на List
    • Смените alert на Alert
  4. Используйте значения свойств для каждого из следующих компонентов:
    • Смените значение свойства Text для textBox на http://netbeans.org
    • Смените значение свойства String для alert на Connection Failed
    • Смените значение свойства Text дляWaitScreen на Please Wait...

Представление "Flow" должно выглядеть следующим образом:

Представление "Flow" со значками компонентов

Добавление изображений

В этом разделе мы добавим изображения, используемые на экранах ожидания и предупреждения.

  1. Загрузите и скопируйте файлы alert.png и sandglass.png в папку $PROJECTHOME/src/waitscreenexample.
  2. Щелкните правой кнопкой мыши компонент alert и выберите Properties ("Свойства") во всплывающем меню.
  3. В диалоговом окне свойств нажмите кнопку Ellipsis ("Многоточие") (кнопка Ellipsis) напротив свойства Image ("Изображение").
  4. В диалоговом окне изображения нажмите кнопку Add ("Добавить).
    Будет добавлен компонент image1.
  5. Нажмите кнопку Browse ("Обзор") и в диалоговом окне Open ("Открыть") укажите путь к скопированному файлу alert.png.
  6. Нажмите кнопку "Открыть".
    Изображение добавлено.
  7. Нажмите кнопку OK, чтобы закрыть диалоговое окно изображения.
  8. Нажмите кнопку Close ("Закрыть"), чтобы закрыть диалоговое окно свойств.
    Изображение alert.png привязано к компоненту alert.
  9. Повторите действия 2-8 для компонента waitScreen, добавьте sandglass.png как image2 и привяжите его к компоненту.

Добавление команд Ok, Back и Exit к компонентам TextBox и WaitScreen

  1. Выберите Ok Command ("Команда Ок") из раздела Commands ("Команды") в Palette ("Палитра"). Перетащите ее в textBox.
  2. Выберите Back Command ("Команда Back") из раздела Commands ("Команды") в Palette ("Палитра"). Перетащите ее в list.
  3. Выберите Exit Command ("Команда Exit") из раздела Commands ("Команды") в Palette ("Палитра"). Перетащите ее в list.

Создание последовательности действий приложения.

Теперь можно приступить к созданию последовательности действий приложения

  1. В представлении Flow ("Последовательность действий") щелкните Started ("Запущено") на Mobile Device и перетащите его в компонент textBox.
  2. Аналогичным образом соедините другие компоненты, как показано на следующем рисунке.

    Соединения на экране конструктора потока должны выглядеть следующим образом: от Mobile Device к textBox1 к waitScreen к list к MobileDevice. Соединение команды Failure с alert, которое в свою очередь соединено с list

Создание фоновой задачи для экрана ожидания

  1. В представлении Flow ("Последовательность действий") выберите компонент waitScreen, затем выберите Properties ("Свойства") из всплывающего меню.
  2. В диалоговом окне Properties ("Свойства") выберите <NewCancellableTask> из раскрывающегося меню Task ("Задача") и щелкните Close ("Закрыть").
    simpleCancellableTask теперь является фоновой задачей компонента waitScreen.
  3. Нажмите кнопку Source ("Исходный код") в Visual Mobile Designer для перехода к исходному коду приложения.
  4. Добавьте метод для фоновой задачи, скопировав следующий код в исходный код MyWaitScreenMIDlet после public void destroyapp(boolean unconditional) { }:
          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();
          } 
    
  5. Щелкните исходный код правой кнопкой мыши и выберите Fix Imports ("Исправить импортированное") во всплывающем меню (либо нажмите Ctrl+Shift+I).
  6. Найдите строку public class MyWaitScreenMidlet extends MIDlet implements CommandListener { (строка 18) и вставьте final, чтобы результат выглядел следующим образом:
     public final class MyWaitScreenMidlet extends MIDlet implements CommandListener {
  7. Найдите метод public MyWaitScreenMidlet() в исходном коде (строка 38) и вставьте следующий код после public MyWaitScreenMidlet() {:
     List list1 = getList();
  8. Щелкните Screen ("Экран") для перехода к представлению экрана и выберите SimpleCancellableTask.
  9. В окне Properties ("Свойства") нажмите кнопку Еllipsis ("Многоточие") (кнопка Ellipsis) напротив свойства Executable Code ("Исполняемый код").
  10. Щелкните Go To source ("Переход к исходному коду") в диалоговом окне исполняемого кода.
  11. Найдите метод getSimpleCancellableTask() в исходном коде (строка 328) и вставьте следующий код после public void execute() throws Exception { where it reads // write task-execution user code here:
     getServerInfo();

Запуск проекта

Нажмите F6 для запуска основного проекта

или выберите "Run" > "Run Main Project".

В начало

Документация Javadoc для компонентов WaitScreen и SimpleCancellableTask

Среда IDE NetBeans предоставляет документацию Javadoc по интерфейсам API для компонентов WaitScreen и SimpleCancellableTask, а также другим компонентам, которые могут быть использованы в VMD. Чтобы прочесть документацию Javadoc для компонентов WaitScreen и SimpleCancellableTask, выполните следующие действия.

  1. Наведите курсор на компонент WaitScreen или SimpleCancellableTask в исходном коде, после чего нажмите Ctr-Shift-Space (либо выберите Source ("Исходный код") > Show Documentation ("Показать документацию")).
    Документация Javadoc для данного элемента отобразится во всплывающем окне.
  2. Щелкните значок Show documentation in external web browser ("Показать документацию во внешнем веб-обозревателе") (Show documentation in external web browser) во всплывающем окне для просмотра подробной информации о компоненте WaitScreen или SimpleCancellableTask в браузере.

В начало



Дополнительные сведения

В начало

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo