У меня есть приложение BlackBerry, которое отправляет данные через веб-службу, когда кнопка имеет состояние, установленное в ON
. Когда кнопка ON
запускает таймер, который непрерывно работает в фоновом режиме с фиксированными интервалами. Метод HttpConnection
называется следующим образом:BlackBerry - приложение зависает, когда выполняется фоновый поток
if(C0NNECTION_EXTENSION==null)
{
Dialog.alert("Check internet connection and try again");
return;
}
else
{
confirmation=PostMsgToServer(encryptedMsg);
}
метод PostMsgToServer
выглядит следующим образом:
public static String PostMsgToServer(String encryptedGpsMsg) {
//httpURL= "https://prerel.track24c4i.com/track24prerel/service/spi/post?access_id="+DeviceBoardPassword+"&IMEI="+IMEI+"&hex_data="+encryptedGpsMsg+"&device_type=3";
httpURL= "https://t24.track24c4i.com/track24c4i/service/spi/post?access_id="+DeviceBoardPassword+"&IMEI="+IMEI+"&hex_data="+encryptedGpsMsg+"&device_type=3";
//httpURL= "http://track24.unit1.overwatch/track24/service/spi/post?access_id="+DeviceBoardPassword+"&IMEI="+IMEI+"&hex_data="+encryptedGpsMsg+"&device_type=3";
try {
String C0NNECTION_EXTENSION = checkInternetConnection();
if(C0NNECTION_EXTENSION==null)
{
Dialog.alert("Check internet connection and try again");
return null;
}
else
{
httpURL=httpURL+C0NNECTION_EXTENSION+";ConnectionTimeout=120000";
//Dialog.alert(httpURL);
HttpConnection httpConn;
httpConn = (HttpConnection) Connector.open(httpURL);
httpConn.setRequestMethod(HttpConnection.POST);
DataOutputStream _outStream = new DataOutputStream(httpConn.openDataOutputStream());
byte[] request_body = httpURL.getBytes();
for (int i = 0; i < request_body.length; i++) {
_outStream.writeByte(request_body[i]);
}
DataInputStream _inputStream = new DataInputStream(
httpConn.openInputStream());
StringBuffer _responseMessage = new StringBuffer();
int ch;
while ((ch = _inputStream.read()) != -1) {
_responseMessage.append((char) ch);
}
String res = (_responseMessage.toString());
responce = res.trim();
httpConn.close();
}
}catch (Exception e) {
//Dialog.alert("Connection Time out");
}
return responce;
}
Мой вопрос: App замирает каждый раз, когда вызывается метод, то есть всякий раз, когда таймер должен выполнять и отправлять данные в веб-службу, приложение зависает - время от времени на несколько секунд и время от времени в течение значительного времени, применяя к пользователю, как если бы телефон повесился. Можно ли это решить? Пожалуйста, помогите !!
спасибо за объяснение, я не очень обеспокоен этими двумя точками вы упомянули. Как начать сетевой процесс с помощью отдельного потока? Сетевой процесс находится в отдельном методе. Должен ли я вызвать этот метод через thread.start? – Sarah