サーバーから XML ファイルをダウンロードしようとしており、XMLpull パーシャーを使用して処理していますが、データ全体を毎回ダウンロードするわけではありません。ダウンロードするのを待ってみても(スレッドスリープ)。なぜこれが起こるのか、または問題を解決する方法を知っていますか? これはファイルをダウンロードする私の機能です
/*XML read*/
private String downloadUrl(String myurl) throws IOException {
InputStream is = null;
int len = 100000;
try {
URL url_get = new URL(myurl);
HttpURLConnection conn = (HttpURLConnection) url_get.openConnection();
conn.setReadTimeout(15000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
// Starts the query
conn.connect();
is = conn.getInputStream();
String contentAsString = readIt(is, len);
return contentAsString;
// Makes sure that the InputStream is closed after the app is
// finished using it.
} finally {
if (is != null) {
is.close();
}
}
}
public String readIt(InputStream stream, int len) throws IOException, UnsupportedEncodingException {
Reader reader = null;
reader = new InputStreamReader(stream, "UTF-8");
char[] buffer = new char[len];
reader.read(buffer);
return new String(buffer);
}
もちろん、スレッドを使用して関数を開始しています。
スレッドは次のとおりです。
Thread thread = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(100);
while (while_start)
{
if(While_getadat){
try {
get_xml = downloadUrl(URL_IMEI);
Thread.sleep(2000);
Global_XML_data=red_xml(get_xml);
Thread.sleep(1000);
While_getadat=false;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
アップデート
デバッグモードでプログラムが適切に動作するという興味深いこと 私はすべてのデータを取得しました