Pergunta

Mesmo com uma conexão de rede pobres?

código Especificamente, eu escrevi que lança um segmento separado (a partir da interface do usuário) que as tentativas de fazer upload de 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 as forças de dados através da rede. Este causas 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.

A minha teoria é que não há nenhuma maneira fácil de evitar esse comportamento, razão pela qual todos os J2ME desenvolvedores tutorial Instrua para criar um ‘envio de dados através da rede ...’ tela, em vez de apenas enviar tudo em uma discussão de fundo. Se alguém puder me provar que estou errado, isso seria fantástico.

Obrigado!

Foi útil?

Solução

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 Honza disse, isso depende do projeto, há tantas coisas que podem ser feitas, como dados pré-busca na inicialização do aplicativo, ou a pré-busca de dados com base 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 built-in mecanismo temporizador que download de dados novas tentativas após determinado período de tempo, e abortar após digamos 5 tentativas ou 1-2 minutos e exibição de tela ou mensagem de erro genérico.

Alguns 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 é sincronizar UI e tópicos de rede, para 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 aparelhos Sanyo por causa disso)

Todos em todos há boa resposta para você, mas diferentes estratégias.

Outras dicas

É 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.

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 insuficiência fora. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top