我有一個線程從互聯網上獲取一些數據。它接近它正確執行並檢索數據。但是,如果我調用一個應該返回數據的方法,那麼我就會留下空值。從那裏我得出結論,線程在finning之前不知何故停止。爲什麼Android線程在完成執行之前被終止?
下面是代碼:
private class getHash extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String... params) {
String str = null;
try {
// Create a URL for the desired page
URL url = new URL(params[0]);
// Read all the text returned by the server
InputStream is = url.openStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader in = new BufferedReader(isr);
str = in.readLine();
is.close();
isr.close();
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
hash = str; //If I set a global variable here it gets passed without a hitch
return str;
}
@Override
protected void onPostExecute(String result) {
hash = result; // If I comment the line above and live this one I left with a null
}
}
編輯: 根據要求添加代碼,其中線程被稱爲:
getHash hashThread = new getHash();
hashThread.execute(new String[] {"http://www.full.path/to/the/file.hash"});
if(hash != null && !hash.equals(localHash)){
....
「從這裏我得出結論,線程在finning之前就停止了。」 - 或者,你有一個例外。 – CommonsWare
您如何檢索價值以證明它在完成之前確實停止。 –
不@CommonsWare我真的得出了一個結論,我沒有看到異常。 GregGiacovelli如果您可能將您的注意力引向我給出的代碼示例,最後您會找到兩行,並附上一些解釋性評論。 – PovilasID