我的應用程序在所有版本的Android中都能正常工作,除非它正在失敗,因爲我正在主線程上進行網絡調用。我的代碼如下url.openStream()
失敗,我想我需要在一個單獨的線程上進行此調用。另外,我創建了這個類Utilities
,所以我可以引用在我的應用程序的許多部分中使用的函數。我確信我錯了,但那是當時我所知道的。我希望有人願意花時間向我展示我應該如何做到這一點,以及如何將openStream
呼叫包裝在AsyncTask
中。在此先感謝您的幫助。另外,我花了幾天時間試圖自己弄清楚。使用AsyncTask的Android幫助
class Utilities {
static XMLReader xr;
static URL url;
private final static int CHUNK_SIZE = 32 * 1024;
static byte[] _fileIOBuffer = new byte[CHUNK_SIZE];
static String DBGetOnlineVersionNumber(final Activity activity){
final String version = null;
try {
/* Create a URL we want to load some xml-data from. */
String location = activity.getString(R.string.version_file_location);
url = new URL(location);
/* Get a SAXParser from the SAXPArserFactory. */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
/* Get the XMLReader of the SAXParser we created. */
xr = sp.getXMLReader();
/* Create a new ContentHandler and apply it to the XML-Reader*/
final XMLVersionReader myExampleHandler = new XMLVersionReader();
xr.setContentHandler(myExampleHandler);
xr.parse(new InputSource(url.openStream())); //Fails here
/* Parsing has finished. */
} catch (Exception e) {
System.out.println("XML Pasing Excpetion = " + e);
}
return version;
}
當你真正想要的是一個字符串時,傳遞Activity引用是一個壞主意。 – dmon 2011-05-15 01:03:57