我使用OS 5.0制作了一个程序。它可以在8520曲线的模拟器上以及设备中正常工作。
现在我正在尝试在带有7.0版本的9900上使用此应用程序,并且它在设备中堆叠HttpConnection
。使用我的程序5.0版本,在9900模拟器中,它工作正常。两个版本之间有什么区别吗?我正在使用我用来在我的线程中建立连接的代码。我不知道在哪里可以找到这个问题的答案。
try {
mTimer = new Timer();
mTimer.schedule(new CountDown(), 60000);
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
popup = new MyPopup("Cargando Incidentes...");
UiApplication.getUiApplication().pushModalScreen(popup);
}
});
conn = (HttpConnection) Connector.open(URL);
InputStream contentIn = conn.openInputStream();
byte[] data = new byte[400];
int length = 0;
StringBuffer raw = new StringBuffer();
while (-1 != (length = contentIn.read(data))) {
raw.append(new String(data, 0, length));
str = raw.toString();
}
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
try {
conn.close();
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
try {
String datos[] = mainScreen.split(str, "ENDOFPAGE");
datos[0] = datos[0].substring(2, datos[0].length());
mainScreen.vecRegistro = mainScreen.split(datos[0],"$");
mainScreen.insertoEnBd();
mainScreen.insertoEnTablaDatosBD(_act);
UiApplication.getUiApplication().popScreen(popup);
} catch (Exception e) {
e.printStackTrace();
mainScreen.add(new RichTextField("Error ThreadIncidentes.run: "+ e.toString()));
}
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
});
return;
} catch (Exception e) {
}
private class CountDown extends TimerTask {
public void run() {
if (str.length() < 50){
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
UiApplication.getUiApplication().popScreen(popup);
Dialog.alert("Error en la conexion");
System.exit(0);
clsThreadIncidentes.currentThread().interrupt();
}
});
return;
}
}
}
答案 0 :(得分:2)
请勿使用Connection.open
。这是打开连接的传统方式,通常需要大量代码来处理后缀,具体取决于您通过BIS,MDS,Wi-Fi或TCP直接连接。
从5.0开始,您可以使用更新的Networking API。这里引用的关键类是ConnectionFactory
。