É possível fazer upload de dados como um processo em segundo plano em J2ME?

votos
3

Mesmo com uma conexão de rede pobres?

Especificamente, eu tenho escrito código que inicia um segmento separado (a partir da interface do usuário) que tenta carregar um arquivo via HTTP POST. Descobri, no entanto, que se a conexão é ruim, o processador fica preso em outputstream.close () ou httpconnection.getheaderfield () ou qualquer leitura / gravação que obriga dados através da rede. Isso faz com que não só o segmento para ficar preso, mas rouba todo o processador, por isso mesmo a interface do usuário deixa de responder.

Eu tentei baixar a prioridade do segmento, sem sucesso.

Minha teoria é que não há nenhuma maneira fácil de evitar esse comportamento, é por isso que todo o tutorial J2ME instruir os desenvolvedores a criar um '... o envio de dados através da rede' tela, em vez de apenas enviar tudo em uma discussão de fundo. Se alguém pode provar que estou errado, isso seria fantástico.

Obrigado!

Publicado 12/02/2009 em 23:08
fonte usuário
Em outras línguas...                            


3 respostas

votos
1

Um aspecto importante é que você precisa ter uma interface genérica ou tela que pode ser exibida quando a chamada rede no fundo falhar. É praticamente uma obrigação em qualquer aplicativo móvel, J2ME ou de outra forma.

Como disse Honza, que depende do design, há tantas coisas que podem ser feitas, como os dados pré-fetch na inicialização do aplicativo ou dados pré-fetch baseados na tela que é carregado (ou seja, o caminho de navegação), ou ter um conjunto de dados padrão construída em no aplicativo etc.

Outra coisa que você pode tentar é um mecanismo temporizador integrado que tentativas de download de dados após certo período de tempo, e abortar depois de dizer 5 tentativas ou 1-2 minutos e exibição de tela genérico ou mensagem de erro.

Certos aparelhos no J2ME permitir a detecção de modo de avião, se possível, você pode detectar isso e prontamente exibir uma tela apropriada.

Além disso, um projeto que tem trabalhado para mim é a sincronização de threads de interface do usuário e de rede, de modo que eles não trancar o outro (tomar este conselho com forte dose de sal como eu tive muito poucos erros interessantes sobre alguns Samsung e Sanyo aparelhos porque disto)

Tudo em tudo há boa resposta para você, mas estratégias diferentes.

Respondeu 15/02/2009 em 00:50
fonte usuário

votos
1

É muito bonito depende de como você escrever o código e onde você executá-lo. Em CLDC o conceito de segmentação é bastante limitada e se qualquer thread está fazendo alguma operação de longa duração outros tópicos pode ser (e usualy são) bloqueado por ele também. Você deve levar isso em conta ao projetar sua aplicação.

Respondeu 13/02/2009 em 00:06
fonte usuário

votos
0

Você pode dividir seus dados de arquivo em pedaços e, em seguida, fazer upload com várias tentativas em caso de falha. Isso depende da sua estratégia de aplicação. Se a sua prioridade é fazer o upload de dados em massa com o fracasso. Você precisa ter montar os pedaços no servidor para construir volta os seus dados. Isso pode ter a sobrecarga para fazer conexões, mas a chance é alta para os seus dados vai ficar carregado. Se você não estiver fazendo upload de arquivos ao mesmo tempo isso vai funcionar com facilidade.

Respondeu 09/03/2009 em 20:09
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more