Fazendo pedido http em J2ME
-
06-09-2019 - |
Pergunta
Estou mantendo uma aplicação J2ME onde eu encontrei uma solicitação http para http://www.google.com na inicialização do aplicativo. Perguntei o desenvolvedor porque é que há uma solicitação ao Google. Ele disse que desta forma as outras solicitações que o aplicativo faz seria mais rápido.
Eu removi este pedido para google.com e os outros pedidos ficou mais lento.
Alguém pode explicar por que isso aconteceu? Como posso fazer outro pedido mais rápido sem fazer pedidos anteriores?
EDIT:
Fazendo solicitação ao Google na inicialização:
- Primeiro pedido (após a inicialização) = 20seg
- Repetindo o primeiro pedido = 5 segundos
Sem fazer solicitação na inicialização:
- Primeiro pedido = 40seg
- Repetindo o primeiro pedido = 5 segundos
Solução
Em um dispositivo móvel iniciar a conexão web vai levar algum tempo e muitas vezes a JVM vai deixar a conexão aberta para a duração do MIDlet em execução (conexões mais modernos são cobrados por byte - Edge, GPRS, Wi-Fi). Então, se uma conexão é feita sobre startApp, você pode encontrar a conexão permanecerá aberta e toda a comunicação não vai precisar abrir uma conexão, somente os dados enviados. Tão rápido e mais confiável!
Este comportamento é plataforma específica, não MIDP2 não estipulam que isso seja verdade (assim Nokias podem diferir de Samsungs etc).
Como conectar a 127.0.0.1 provavelmente não vai enganar a JVM, que pode decidir que não precisa de uma conexão GPRS aberta para isso. Novamente específico da plataforma.
James
Outras dicas
... talvez o primeiro pedido inicializa a camada de rede (*) no dispositivo e talvez também a JVM.
Estou certo de que ele funciona com www.microsoft.com também: -)
*) Eu suspeito que isso depende de qual dispositivo você está executando. Eu não tenho idéia o que está acontecendo, mas não pode ser qualquer coisa. Por exemplo:. Iniciando o dispositivo de rádio, a criação de uma sessão com o operador de rede, carregamento e começar as aulas na JVM
Tente se conectar ao 127.0.0.1 em vez de google e ver se isso faz tentativas posteriores mais rápido.
Se o aplicativo está fazendo um monte de initalizations que leva um tempo antes de fazer a primeira tentativa de conexão real, você pode iniciar um novo tópico cedo que faz uma tentativa de conexão. Talvez isso irá reduzir o tempo de espera total.