spacer.png, 0 kB
spacer.png, 0 kB
Home arrow Java arrow J2ME arrow J2ME: un esempio di MIDlet
J2ME: un esempio di MIDlet PDF Stampa E-mail
Scritto da Administrator   
lunedì 08 settembre 2008

Una MIDlet è un'applicazione Java creata per sistemi embedded, con istallata una J2ME Virtual Machine.
Come si può vedere dall'esempio qui di seguito infatti la classe principale estende (e non potrebbe essere altrimenti) la classe MIDlet, tramite l'istruzione public class NomeClasse extends MIDlet.

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class Hello extends MIDlet
{
  public Hello() {}
  public void pauseApp() {}
  public void destroyApp(boolean ignore) {}
  public void startApp()
  {
    Display.getDisplay(this).setCurrent(
      new TextBox("Hello", "World", 9, 0));
  }
}

Alla prima e seconda riga del listato possiamo vedere l'importazione dei package base necessari al funzionamento della nostra piccola applicazione. Il primo altro non è che la classe MIDlet (astratta), mentre il secondo (lcdui) racchiude il package base per la gestione dell'interfaccia grafica.

Altra caratteristica che possiamo rimarcare, specifica di questo tipo di applicazioni J2ME, è la definizione dei metodi obbligatori startApp, pauseApp e destroyApp.
I tre metodi ricalcano infatti il comportamento di una MIDlet secondo quello che viene normalmente definito come il suo ciclo di vita.
Il metodo startApp contiene l'inizializzazione delle risorse necessarie alla determinata applicazione e le istruzioni che successivamente ne determinano il funzionamento (il tutto eseguito ovviamente all'avvio o al riavvio della stessa).
Il metodo pauseApp serve invece a gestire la sospensione della MIDlet, il cui concreto funzionamento può variare da dispositivo a dispositivo (si pensi ad esempio alla chiusura del flip in alcuni telefoni cellulari).
Con destroyApp si gestisce infine la chiusura dell'applicazione che può variare in base al parametro boolean passato come argomento: true se si vuole che tutte le risorse vengano rilasciate e liberate all'uscita mentre false se si vuole che tale fase non avvenga immediatamente (terminando ad esempio l'esecuzione di un brano audio).
La notifica vera e propria della chiusura della MIDlet alla J2ME Virtual Machine avviene comunque, come vedremo, con il metodo notifyDestroyed().

Aggiungiamo ora qualche altro elemento in più al nostro listato: ci servirà infatti per familiarizzare con il concetto di Display e di Form.

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class Hello extends MIDlet
{
  private Display mDisplay;
  private Form mForm;

  public Hello() {}
  public void pauseApp() {}
  public void destroyApp(boolean ignore) {
    notifyDestroyed();
  }
  public void startApp()
  {
    mDisplay = Display.getDisplay(this);
    mForm = new Form ("Form 1");
    StringItem si = new StringItem("hello"," by alex");
    mForm.append(si);
    mDisplay.setCurrent(mForm);

  }
}

Come abbiamo avuto modo di vedere anche nell'esempio precedente, l'attributo Display è una delle prime istruzioni che caratterizzano il nostro listato. Si tratta semplicemente infatti dell'astrazione del display del nostro dispositivo, sul quale imposteremo di volta in volta i vari elementi grafici.
Il Form invece può considerarsi un contenitore, di livello inferiore rispetto al Display stesso, nel quale racchiudere tutti gli elementi ai quali si attribuisce una specifica funzione complessiva (nel nostro caso solamente un semplice StringItem).
Si può pensare ai Form come le finestre di un'applicazione per PC, ognuno dei quali con gli elementi grafici che si vogliono di volta in volta far comparire a schermo. Un'applicazione potrà avere infatti una schermata principale ed una secondaria per il settaggio delle impostazioni principali, visualizzate alternativamente, in base all'interagire dell'utente, attraverso il metodo setCurrent(myForm) dell'attributo Display.
Si noti infine il metodo notifyDestroyed() che abbiamo aggiunto a destroyApp() come spiegato poco sopra.

Ultimo aggiornamento ( lunedì 21 dicembre 2015 )
 
< Prec.
spacer.png, 0 kB
spacer.png, 0 kB
spacer.png, 0 kB