header6.jpg
Login

Divulgue-nos
Quer aprender programar ? é aqui o lugar !
PARCERIAS

Você também pode optar por uma parceria, como troca de links ou banners enviando uma mensagem, clicando AQUI e informe no assunto PARCERIA, e o seu site.
Categorias

Xlets – Entendendo a programar



Os programas desenvolvidos utilizando a API JavaTV são chamados de Xlets. Assim como as applets e midlets, temos hoje as Xlets.

As applets e as Xlets possuem algumas características em comum. Como nas classes applets, a Xlet possui métodos que permitem o gerenciador de aplicação inicializar, executar e parar. Mas existem diferenças também. A maior diferença é que a Xlet possue um estado a mais: a Xlet pode ser pausada e resumida posteriormente. a Razão para este estado a mais é respondida pelo ambiente em que uma Xlet executa: a TV Digital. Neste tipo de ambiente, muitas aplicações podem estar executando ao mesmo tempo, mas por restrições de hardware, apenas uma aplicação pode estar visível a um dado momento. Sendo assim, aplicações não visíveis devem ser pausadas para liberar recursos para as aplicações que estão visíveis.

Ciclo de Vida da Xlet
As Xlets possuem 4 estados principais: Carregado (Loaded), Executado (Started), Pausado (Paused) e Destruído (Destroyed). A figura abaixo ilustra o ciclo de vida de uma Xlet:

Ciclo de Vida de uma Xlet

Assim como as applets, a interface Xlet possui um gerenciador de aplicação, o qual pode executar e parar uma aplicação, assim como ter o controle sobre o seu ciclo de vida. A interface Xlet é encontrada no pacote javax.tv.xlet.

Primeiramente o gerenciador de aplicação carrega o arquivo da classe principal da Xlet (sinalizado pela emissora) e cria uma instância da Xlet chamando o seu construtor padrão. Isto pode acontecer em qualquer ponto depois que a aplicação é sinalizada. Uma vez acontecido, a Xlet entra no estado Carregado (Loaded). No código abaixo vemos uma classe com o seu construtor padrão:

public Class ExemploXlet implements Xlet{ // Classe java que implementa a interface Xlet
     public ExemploXlet()
     { // Construtor da classe
     }
}

Quando o usuário escolhe executar (start) a Xlet (ou outra aplicação sinaliza indicando que a Xlet deve executar automaticamente), o gerenciador de aplicação no receptor chama o método initXlet(), passando um novo objeto do tipo XletContext para a Xlet. Quando a inicialização estiver completa, a Xlet entra no estado pausado (Paused) e está pronta para executar (start) a qualquer momento. Abaixo segue o código do método initXlet() e pauseXlet():

public void initXlet(XletContext contexto) throws XletStateChangeException;
public void pauseXlet();

Uma vez retornado o método initXlet(), o gerenciador de aplicação chama o método startXlet(). Assim, a Xlet passará do estado pausado (Paused) para o estado executado (Started). A Xlet então estará apta a interagir com o usuário. Abaixo segue o código do método startXlet():

public void startXlet()  throws XletStateChangeException;

Durante a execução da Xlet, o gerenciador de aplicação pode chamar o método pauseXlet(). Isto fará com que a aplicação mude do estado executado (Started) para o estado pausado (Paused). Posteriormente a aplicação voltará ao estado executado chamando o método startXlet() novamente. Isto pode acontecer dezenas ou centenas de vezes durante o ciclo de vida da Xlet.
No fim do ciclo de vida da Xlet, o gerenciador de aplicação charmará o método destroyXlet(), o que moverá a Xlet ao estado destruído (Destroyed) e liberará todos os seus recursos. Depois disto, a instância da Xlet não poderá ser executada novamente. Abaixo segue o código do método destroyXlet():

public void destroyXlet(boolean unconditional) throws XletStateChangeException;

Esqueleto da Xlet
Tendo em vista as afirmações acima podemos exemplificar o esqueleto de uma Xlet:

import javax.tv.Xlet; // pacote que contém a interface Xlet
public class ExemploXlet implementes Xlet{ // interface Xlet sendo implementada na classe
   public ExemploXlet(){ // construtor da Xlet
   }
   // métodos que compões o ciclo de vida da Xlet
   public void initXlet(XletContext contexto) throws XletStateChangeException{
   }
   public void startXlet()  throws XletStateChangeException{
   }
   public void pauseXlet{
   }
   public void destroyXlet(boolean unconditional) throws XletStateChangeException{
   }
}

Xlet Contexts
Como mencionado anteriormente, cada Xlet possui um context, uma instância da classe javax.tv.xlet.XletContext. É similar ao AppletContext. Em ambos os casos, o contexto é usado para prover uma maneira para a aplicação obter maiores informações sobre o ambiente em que executa e para comunicar qualquer mudança de seu estado ao gerenciador da aplicação.
A interface XletContext possui alguns métodos que devem ser apresentados. Os métodos notifyDestroyed() e notifyPaused(), permitem uma Xlet notificar ao receptor que está prestes a terminar ou a ser pausada. A Xlet pode usar estes métodos para ter certeza que o receptor saberá o estado de cada aplicação, podendo assim, tomar a ação apropriada. Estes métodos devem ser chamados imediatamente antes da Xlet entrar nos estados pausado ou destruido.
Uma aplicação pode requisitar ser movida do estado pausado de volta para o estado executado, usando o método resumeRequest().
Os diagramas abaixo mostram exatamente o que acontece quando uma Xlet requisita uma mudança de estado via XletContext. Neste caso, a Xlet será pausada e entao requisitará ser resumida.


A Xlet chama o método notifyPaused() no contexto da Xlet

O context da Xlet notifica ao gerenciador de aplicação que a Xlet foi pausada

O gerenciador de aplicação faz um update de seu estado interno

A Xlet chama o método requestResume() quando quer ser resumida

O objeto context passa a requisição para o gerenciador de aplicações

O gerenciador de aplicação notifica a Xlet que ela pode ser resumida

A Xlet é executada

Finalizo aqui este post sobre Xlets, espero que tenha ficado claro o funcinamento e o ciclo de vida de uma Xlet.

Abraços
Dang

Posts Relacionados:

Java - Vetores e Matrizes by Dang on August 28th, 2009
E ai gente vou tentar fazer mais um post aqui antes de ir pra faculdade.

Entendendo a Camada Middleware by Dang on August 31st, 2009
.

Aprendendo JSP - Java Server Pages (parte 2) by Amanda Morais on September 28th, 2009
Antes de começarr, se não leu a primeira parte desse artigo sugiro que leia, .

Segurando o pedido do cliente - Servlets by Dang on September 29th, 2009
DAR FORMA AOS DADOS Quando o usuário submete o formulário, sua informação está emitida à lima correspondente do servlet porque nós ajustamos o atributo da AÇÃO para apontar ao servlet.

XStream: Trabalhando com facilmente XML em Java by Dang on March 30th, 2010
Recentemente fui chamado a participar de um projeto que envolvia manipulação de arquivos xml e criptografia, achei alguns tutoriais navegando e gostaria de compartilhar.

Related Posts with Thumbnails
Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • email
  • Live
  • MySpace
  • Reddit
  • RSS

Faça um comenário


Vale um clique
Siga-nos
banner_twiter Orkut
Autores
Aconselho:
Divulgadores
Que tal divulgar sem gastar ? é aqui o lugar ! Colmeia: O melhor dos blogs Está no seu momento de descanso né? Entao clique aqui! Uêba - Os Melhores Links