我的应用程序在所有版本的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