Dúvida sobre j2me Webservices e Thread

Olá pessoal, estou desenvolvendo uma aplicação J2ME,

uso netbeans 6.7.1, com WTK, 2.5.2
e estou com um problema:

Minha aplicação conecta-se a um Webservice java (utilizei o wizard do netbeans para a criação dos webservices, c/ stubs etc…), responsável por funçãoes como login, persistência de dados, etc.
Os métods CommandListenner(), não permitem operações de conexão a servidores externos sem o uso de Threads,
então, na minha MIDlet, implementei a Interface Runnable e fiz uma operação como por exemplo login e funcionou perfeitamente.

Implementei a parte de conexão para validação de usuários no método run(), da minha MIDlet.

Minha dúvida é em relação ao fato de eu necessitar implementar muitas outras operações nesta mesma midlet que cosumam o webservice.

por exemplo:

Na tela de login:
Entro com login e senha e seleciono um botão para efetuar o login;

A action deste botão faz o seguinte:

New Thread().start;

isto faz com que seja feita a conexao e as operações do webservice;
Se eu quiser implementar outra operação deverei colocar os métodos desta no meu run() para que funcione. O
problema é que quando eu for executar uma operação todas as outras que estão no método run() também serão executadas.

Preciso saber como implementar as outras operações na mesma MIDLet, para que cada uma seja executar separadamente;

Agradeço muito se alguém puder me dar umas dicas.

Já diria o seu Silvio: “UM MILHÃO DE CLASSES THREAD EM J2ME QUE PESAM MAIS DO QUE J2SE”, bom após a brincadeira cretina vamos lá…

Faça assim, invez de no commandAction chamar dar start em uma classe que extenda thread, simplismente crie uma thread em tem em tempo de execução dentro do commandAction e vc terá threads dinamicas e que podem ser chamadas mais de 1 vez. facilmente.

Exemplo:

public void commandAction(Command cmd){
if (cmd.equals(cmdok)){
new Thread(){
public void run(){
conectar();
}
}.start();
}
}

private void conectar(){
seus códigos;
}

Com isso o método “conectar” ira ser executado em uma thread paralela.
Desculpe se ouver algum erro ai, mas estou escrevendo num domingo 1:30 da manhâ e não testei nada antes de postar. Mas essse é o caminho.

Cuidado com os usos de Thread e com esse método “Threadable” pequeno Padwan.

Abraços
Ricoldi

Olá ricoldi
Excelente dica a sua.
Muito obrigado.

Eu havia resolvido o problema colocando condicionais If/else no meu método run(), na minha MIDlet que implementava a interface Runnable. Porém corrigi um acrescentado outro…

Vi que a solução sugerida por você é bem mais inteligente e ja fiz as alterações no código. Ficou Perfeito.

Grande Abraço!!!