我在一个新线程中引入一个rss feed(实现runnable的类,如下所示)我想使用我从rss feed获得的字符串并将它们返回给主类。主类只是像这样运行线程
new Thread(new RssParse()).start();
我很难找到将这些从xml中删除的字符串返回给主类的方法。感谢任何帮助。
public class RssParse implements Runnable {
private static final String MY_DEBUG_TAG = "pfaff";
public void run(){
System.out.println("1");
URL iotd;
try{
iotd = new URL("http://www.nasa.gov/rss/image_of_the_day.rss");//set URl
BufferedReader in;//new BufferedReader
in = new BufferedReader(new InputStreamReader(iotd.openStream()));//get rss
XmlPullParserFactory factory;
factory = XmlPullParserFactory.newInstance();//new factory
factory.setNamespaceAware(true);
XmlPullParser xpp;
xpp = factory.newPullParser();
xpp.setInput(in);
int eventType;
eventType = xpp.getEventType();
System.out.println(eventType+"!!!!!!!!!!!!!!!!");
while(eventType!=XmlPullParser.END_DOCUMENT){
switch(eventType){
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
String tagName=xpp.getName();
System.out.println(tagName+" "+xpp.getDepth());
if(tagName.equals("title")&& xpp.getDepth()==4){//depth is specific to this certain rss feed, there are multiple tags with the same names
String title=xpp.nextText();// I want to return title and a few other strings but can't figure out how to do this when dealing with threads.
System.out.println(title);
}
break;
}
eventType=xpp.next();
}//switch
in.close();//close BufferedReader
} catch (MalformedURLException e){
e.printStackTrace();
}catch(XmlPullParserException e1){
e1.printStackTrace();
}catch(IOException e2){
e2.printStackTrace();
}
}//method
}//class
答案 0 :(得分:4)
我想建议AsyncTask。您必须覆盖子类中的doInBackground(Params...)
和onPostExecute(Result)
AsyncTask。
答案 1 :(得分:0)
您可以使用处理程序将其发布到主线程
Runnable runnable = new Runnable()
{
@Override
public void run() {
for (int i = 0; i <= 10; i++) {
handler.post(new Runnable() {
@Override
public void run() {
progress.setProgress(value);
}
});
}
}
};