TimerTask 内で kSoap を使用して http 呼び出しを行っているため、5 分ごとにデータを更新できます。Web サービスからデータを取得した後、関数 procecssData() を介してインターフェイスに提供します。これは初めて完全に機能しますが、データが同じままであるたびにタイマーが起動します。実際、UI は 5 分ごとに描画されますが、常に最初の http 呼び出しからのデータが使用されます。誰かがなぜこれが起こるのか考えていますか? httpCall() 関数内の変数が更新されていないようです。
public class ConnectionThread extends Thread {
SoapObject request;
SoapObject result;
SoapSerializationEnvelope envelope;
String[][] resultArray;
int resultLength;
public ConnectionThread(ConnectionCallback conCallback) {
callbackObj = conCallback;
refreshTask = new TimerTask() {
public void run() {
httpCall();
}
};
new Timer().schedule(refreshTask, 0, 50000);
}
public void httpCall() {
request = new SoapObject(serviceNamespace, methodName);
result = null;
envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
http = new HttpTransport(serviceUrl);
try {
http.call(soapAction, envelope);
result = (SoapObject) envelope.getResponse();
resultLength = result.getPropertyCount();
} catch (final InterruptedIOException ex) {
Dialog.alert("No Internet Connection!");
_isConnected = false;
}
// some other catch blocks
finally {
http.reset();
}
resultArray = new String[resultLength][resultLength * 8];
// put result into own Stringarray
if (_isConnected) {
callbackObj.processData(resultArray, resultLength);
}
}
}
どんな助けでも大歓迎です!:) 乾杯、ムシプー