在Android中创建线程
如何创建新线程并在主文件中启动SrcGrabber.grabSource()的启动?我应该使用哪种类型的线?如果没有其他线程,此代码将无法工作。在Android中创建线程,android,eclipse,multithreading,Android,Eclipse,Multithreading,如何创建新线程并在主文件中启动SrcGrabber.grabSource()的启动?我应该使用哪种类型的线?如果没有其他线程,此代码将无法工作。 在主文件中,我只需要执行SrcGrabber.grabSource()并继续执行返回的mBuffer.toString() }最好阅读这篇博客文章: 它解释了Android中可能的不同方式。我不知道你的“主文件”是什么,但假设它是活动< /代码>,然后考虑转换你的代码> SRCGracBue类,以扩展 AycCastase。除此之外,你可以在这里阅读有
在主文件中,我只需要执行SrcGrabber.grabSource()并继续执行返回的mBuffer.toString()
}最好阅读这篇博客文章:
它解释了Android中可能的不同方式。
我不知道你的“主文件”是什么,但假设它是<代码>活动< /代码>,然后考虑转换你的代码> SRCGracBue<代码>类,以扩展<代码> AycCastase。除此之外,你可以在这里阅读有关线程的内容…+1用于该链接-我试图找到该链接,但在我的浏览器书签中没有该链接。我不得不自己用谷歌搜索它,但标题很吸引人,所以我记得它:-)但我不明白如果该函数位于另一个线程中,如何获取该函数返回的数据。onPreExecute(),onPostExecute()和onProgressUpdate()都在UI线程上调用public class SrcGrabber {
private HttpGet mRequest;
private HttpClient mClient;
private BufferedReader mReader;
private DocumentBuilder mBuilder;
private StringBuffer mBuffer;
private String mNewLine;
public SrcGrabber() {
mRequest = new HttpGet();
mClient = new DefaultHttpClient();
mReader = null;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
factory.setIgnoringComments(true);
mBuilder = factory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
mBuffer = new StringBuffer(2000);
mNewLine = System.getProperty("line.separator");
}
public String grabSource(String url) throws ClientProtocolException,
IOException, URISyntaxException {
mBuffer.setLength(0);
try {
mRequest.setURI(new URI("http://www.bash.im"));
HttpResponse response = mClient.execute(mRequest);
mReader = new BufferedReader(new InputStreamReader(response
.getEntity().getContent()));
String line = "";
while ((line = mReader.readLine()) != null) {
mBuffer.append(line);
mBuffer.append(mNewLine);
}
} finally {
closeReader();
}
return mBuffer.toString();
}
private void closeReader() {
if (mReader == null)
return;
try {
mReader.close();
} catch (Exception e) {
e.printStackTrace();
}
}