52
by B. Hari Prasad, Asst.Prof, CSE Dept. Faculty Gopallapuram, Renigunta-Srikalahasti road, Tirupati

j2me unit - 3

Embed Size (px)

DESCRIPTION

enjoy

Citation preview

Page 1: j2me unit - 3

by B. Hari Prasad, Asst.Prof, CSE Dept. Faculty

Gopallapuram, Renigunta-Srikalahasti road, Tirupati

Page 2: j2me unit - 3

J2ME BEST PRACTICES

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Page 3: j2me unit - 3

KEEP APPLICATIONS SIMPLE

KEEP APPLICATION SMALL

LIMIT THE USE OF MEMORY

OFF-LOAD COMPUTATIONS TO THE SERVER

MANAGE YOUR APPLICATIONS USE OFA NETWORK CONNECTION

J2ME BEST PRACTICES

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Page 4: j2me unit - 3

SIMPLIFY THE USER INTERFACE

USE LOCAL VARIABLES

DONT CONCATENATE STRINGS

AVOID SYNCHRONZATION

THREAD GROUP CLASS WORKAROUND

UPLOAD CODE FROM THE WEB SERVER

J2ME BEST PRACTICES

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Page 5: j2me unit - 3

READING SETTINGS FROM JAD FILES

POPULATING DROP DOWN BOXES

MINIMIZE NETWORK TRAFFIC

DEALING WITH TIME

AUTOMATIC DATA SYNCHRONIZATION

UPDATING DATA THAT HAS CHANGED

J2ME BEST PRACTICES

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Page 6: j2me unit - 3

Commands, Items, and

Event Processing

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Page 7: j2me unit - 3

J2ME User Interfaces:-

A user interface is a set of routines that displays information on the screen, prompts the user to perform a task, and then processes the task.

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Page 8: j2me unit - 3

J2ME User Interfaces

A developer can use one of three kinds of user interfaces for an application.

These are a

Command based user interface

Form based user interface

Canvas based User Interface

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Page 9: j2me unit - 3

J2ME User InterfacesA command-based user interface consists of instances of the

Command class. An instance of the Command class is a button that the user presses on the device to enact a specific task.

A form-based user interface consists of an instance of the Form class that contains instances derived from the Item class such as text boxes, radio buttons, check boxes, lists, and other conventions used to display information on the screen and to collect input from the user.

A canvas-based user interface consists of instances of the Canvas class within which the developer creates images such as those used in a game

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Page 10: j2me unit - 3

Display Class The device’s screen is referred to as the display, and

you interact with the display by obtaining a reference to an instance of the MIDlet’s Display class.

Each MIDlet has one and only one instance of the Display class.

The Displayable class has two subclasses.

Screen class and the Canvas class.

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Page 11: j2me unit - 3

Display Class

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Page 12: j2me unit - 3

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Display Class

Page 13: j2me unit - 3

• The Screen class contains a subclass called the Item class, which has its own subclasses used to display information or collect information from a user (such as forms, check boxes, radio buttons).

• The Canvas class is used to display graphical images such as those used for games. Displays created using the Canvas class are considered a low-level user interface and are used whenever you need to display a customized screen.

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Display Class

Page 14: j2me unit - 3

Display Class

You can get a reference to the device’s display by supplying a MIDlet reference to the static getDisplay() method.

private Display display;

Display d = Display.getDisplay(this);

Once we got a reference to a device’s Display, we’ll just need to create an instance of Displayable and pass it to one of Display’s setCurrent()

methods:

public void setCurrent(Displayable next)

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Page 15: j2me unit - 3

Example

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Page 16: j2me unit - 3

JAD file for Example

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Page 17: j2me unit - 3

Code

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Page 18: j2me unit - 3

Code

Page 19: j2me unit - 3

Code

Page 20: j2me unit - 3
Page 21: j2me unit - 3
Page 22: j2me unit - 3

The Palm OS Emulatoryou’ll need to download Palm OS ROM files (www.palmos.com/dev)

The ROM file contains the Palm OS required for the emulator to properly perform like a Palm PDA.

The Palm OS emulator displays an error when running your MIDlet, indicating the proper version of the Palm OS that is required to run your MIDlet on the Palm device that is being tested in the emulator

B. Hari Prasad, Asst.Prof, Shree Institute of Technical Education

Mallavaram, Tirupati

Page 23: j2me unit - 3

Command Class

Create an instance of the Command class by using the Command class constructor

The Command class constructor requires three parameters.Command labelThe command typeThe command priority

The Command class constructor returns an instance of the Command class.

Command Object = new Command(“cmd label”,”cmd type”, ”cmd priority”);

Page 24: j2me unit - 3

Command Class

Page 25: j2me unit - 3

CommandListener ClassCommand Class

•Creates an instance of the Command class must also create an instance that implements the CommandListener interface

•The CommandListener is notified whenever the user interacts with a command by way of the commandAction() method.

•Classes that implement the CommandListener must implement the commandAction() method, which accepts two parameters.

First parameter - Command class Second parameter - Displayable class

Page 26: j2me unit - 3

public void commandAction(Command cmd, Displayable displayable){--------}

Command Class

public void commandAction(Command cmd, Displayable displayable){if (cmd == cancel){destroyApp(false);notifyDestroyed();}}

Sample code from the above example program

Page 27: j2me unit - 3
Page 28: j2me unit - 3

Online help example JAD file for Example

Page 29: j2me unit - 3

Code

Page 30: j2me unit - 3

Code

Page 31: j2me unit - 3

Code

Page 32: j2me unit - 3

Code

Page 33: j2me unit - 3
Page 34: j2me unit - 3
Page 35: j2me unit - 3

Item Class

Page 36: j2me unit - 3

The Item class is derived from the Form class, and that gives an instance of the Form class character and functionality by implementing text fields, images, date fields, radio buttons, check boxes, and other features common to most graphical user interfaces

The Item class has similarities to the Command class in that instances of both classes must be declared and then added to the form.

The user interacts with your application by changing the status of instances of derived classes of the Item class, except for instances of the ImageItem class and StringItem class.

These instances are static and not changeable by the user

item Class

Page 37: j2me unit - 3

A change in the status of an instance of the Item class is processed by the itemStateChanged() method

The itemStateChanged() method is similar to the actionCommand() method used to respond to the invocation of a command by the user of your application

The state is changed by the user or by your application.

The application manager invokes the itemStateChanged() method when the user changes focus from the current instance of the Item class to another instance, if the current instance state changed because of user interaction with the instance. The itemStateChanged() method processes the change before focus is set on the other instance.

item Class

Page 38: j2me unit - 3

public void itemStateChanged(Item item){if (item == selection){StringItem msg = new StringItem("Your color is ",radioButtons.getString(radioButtons.getSelectedIndex()));form.append(msg);}

public void itemStateChanged(Item item){if (item == itemname){--------}

Sample code from the above example program

item Class

Page 39: j2me unit - 3

Example

Page 40: j2me unit - 3

JAD file for Example

Page 41: j2me unit - 3

Code

Page 42: j2me unit - 3

Code

Page 43: j2me unit - 3

Code

Page 44: j2me unit - 3

Code

Page 45: j2me unit - 3
Page 46: j2me unit - 3

Exception Handling

The application manager calls the startApp(), pauseApp(), and destroyApp() methods whenever the user or the device requires a MIDlet to begin, pause, or terminate.

A MIDletStateChangeException is used to temporarily reject a request from the application manager either to start the MIDlet (startApp()) or to destroy the MIDlet (destroyApp()). AMIDletStateChangeException cannot be thrown within the pauseApp() method.

Control of the MIDlet’s operation by causing a MIDletStateChangeException to be thrown

Page 47: j2me unit - 3

Throwing a MIDletStateChangeException

MIDlet-Name: ThrowExceptionMIDlet-Version: 1.0MIDlet-Vendor: MyCompanyMIDlet-Jar-URL: ThrowException.jarMIDlet-1: ThrowException, ThrowException.png, ThrowExceptionMicroEdition-Configuration: CLDC-1.0MicroEdition-Profile: MIDP-1.0MIDlet-JAR-SIZE: 100

Exception Handling

JAD file for Example

Page 48: j2me unit - 3

Codeimport javax.microedition.lcdui.*;import javax.microedition.midlet.*;public class J2MEDisplayAlert extends MIDlet implements CommandListener {  private Display display;  private Alert alert;  private Form form;  private Command exit;  private boolean exitFlag;

  public J2MEDisplayAlert() {    exitFlag = false;    display = Display.getDisplay(this);    exit = new Command("Exit", Command.SCREEN, 1);    form = new Form("Throw Exception");    form.addCommand(exit);    form.setCommandListener(this);  }

Page 49: j2me unit - 3

Code

public void startApp() {    display.setCurrent(form);  }

  public void pauseApp() {  }

  public void destroyApp(boolean unconditional) throws MIDletStateChangeException {    if (unconditional == false) {      throw new MIDletStateChangeException();    }  }

Page 50: j2me unit - 3

Codepublic void commandAction(Command command, Displayable displayable) {    if (command == exit) {      try {        if (exitFlag == false) {          alert = new Alert("Busy", "Please try again.", null, AlertType.WARNING);          alert.setTimeout(Alert.FOREVER);          display.setCurrent(alert, form);          destroyApp(false);        } else {          destroyApp(true);          notifyDestroyed();        }      } catch (MIDletStateChangeException exception) {        exitFlag = true;      }    }  }}

Page 51: j2me unit - 3
Page 52: j2me unit - 3