Iniciando em J2ME: Analisando o código Hello World

19 maio 2009

Continuando o último post (Iniciando em J2ME: Desenvolvendo o Hello World), vamos explicar agora todo o código fonte gerado pelo editor visual do Netbeans, para o código do Hello World.

O código ficou o seguinte:


A classe HelloMIDlet extende MIDlet (é um código java de aplicativo móvel) e implementa CommandListener, que é a classe responsável pelos comandos, no caso o CommandExit, que sai do aplicativo.

Em General Fields: estão as declarações necessárias.

private Command exitCommand; // o comando Sair
private Form form; //o form utilizado
private StringItem stringItem; //o item de string com Hello e Hello World

Em Generated Method: startMIDlet - função startMIDlet, é onde escrevemos como deve iniciar a aplicação.


public void startMIDlet(){
switchDisplayable(null,getForm());
}


No caso a aplicação inicia com o comando switchDisplayable, que exibe um display (tela). O primeiro parâmetro é de onde esta vindo (de que tela) e o segundo para que tela quer ir, que tela quer mostrar, no caso a tela form, que é obtida através da função getForm().

Em Generated Method: switchDisplayable - função que retorna qual tela mostrar, de acordo com os parâmetros mandados, como vimos acima.

Em Generated Method: commandAction for Displayables - implementação dos comandos usados na aplicação.


public void commandAction(Command command, Displayable displayable){
if (displayable == form){
if (command == exitCommand){
exitMIDlet();
}
}
}


No displayable form está o comando exit (exitCommand) que quando selecionado executa o código determinado, no caso o exitMIDlet, que encerra a aplicação.

Em Generated Getters: exitCommand - código que cria e retorna o exitCommand.

public Command getExitCommand() {
if (exitCommand == null) {
exitCommand = new Command("Exit", Command.EXIT, 0);
}
return exitCommand;
}


exitCommand recebe um novo comando. Os parâmetros são o nome, que vai aparecer na tela, o tipo do comando, no caso EXIT e a prioridade do comando.

Em Generated Getters: form - código que cria e retorna o form.

public Form getForm() {
if (form == null) {
form = new Form("Welcome", new Item[] { getStringItem() });
form.addCommand(getExitCommand());
form.setCommandListener(this);
}
return form;
}

O form recebe um novo form e os parâmetros definem como este vai ser. O primeiro parâmetro é o título, o segundo são os itens que este possui. Entre chaves está o método que retorna cada item.

Em uma tela (form, list ou outro) podem ter vários itens. Para mostrar quais são os itens e screens (telas) vejamos a figura abaixo que define a hierarquia de componentes do J2ME.


Continuando o código da função getForm() temos a linha:

form.addCommand(getExitCommand());

Corresponde ao ExitCommand que está sendo adicionado ao form e em

form.setCommandListener(this);

informamos que neste form existe um evento.

Em Generated Getters: stringItem - código que cria e retorna este item de string.

public StringItem getStringItem() {
if (stringItem == null) {
stringItem = new StringItem("Hello", "Hello, World!");
}
return stringItem;
}


stringItem recebe um novo StringItem e os parâmetros são os textos que vão aparecer na tela, no primeiro campo e no segundo.

Depois disso temos a função getDisplay() que retorna uma instância da classe Display, a qual serve para a MIDlet acessar as informações do dispositivo em que esta sendo executada. Estas informações são referentes ao tamanho da tela, disposição de botões, cores, entre outros.

public Display getDisplay () {
return Display.getDisplay(this);
}

Em seguida a função exitMIDlet() - encerra o aplicativo.

public void exitMIDlet() {
switchDisplayable (null, null);
destroyApp(true);
notifyDestroyed();
}

Primeiro é setado null (nada) para ser exibido na tela.
Depois é destruída a aplicação e essa ação é notificada ao gerenciador.

Os próximos 3 métodos são obrigatórios para o MIDlet e serão criados sempre que criar um novo MIDlet.

O primeiro: startApp é chamado automaticamente quando a plicação é executada.
Se você não clicar em iniciar (launch) a aplicação ficará no estado pausado (resumeMIDlet).
Se você iniciar a aplicação isto vai ser notificado e o starMIDlet será chamado para executar a(s) primeira(s) ação(ões) desejada(s).
Como o MIDlet está em execução o midletPaused é setado como falso.

public void startApp() {
if (midletPaused) {
resumeMIDlet ();
} else {
initialize ();
startMIDlet ();
}
midletPaused = false;
}

O segundo método é para quando a aplicação for pausada. O midletPaused é setado como verdadeiro.

public void pauseApp() {
midletPaused = true;
}

E o último método é para destruir a aplicação. Pode ser passado true ou false como parâmetro. O false seria usado para gerar uma exceção quando o usuário optar por sair, para o gerenciador ver se o aplicativo pode ser fechado. O true diz que a aplicação será fechada independente de qualquer coisa, mesmo que algum processo ainda esteja sendo executado.


public void destroyApp(boolean unconditional) {
}



Terminada a análise do código! Qualquer dúvida é só entrar em contato.

0 comentários:

Postar um comentário