好的,我先简化一下场景
实际上我想在完成后台线程操作后触发一些动作。
因此,我制作了一个如下所示的线程回调接口。
接口OnThreadCompleted.java
package xml.parser;
public interface OnThreadCompleted {
public void OnThreadCompleted();
}
这是我扩展线程的实际XMLParserThread.java
public class XMLParserThread extends Thread {
ArrayList<Integer> listWeatherCode;
ArrayList<String> listWeatherDesc;
ArrayList<String> listIcon_day;
ArrayList<String> listIcon_night;
Context context;
String fileName;
XMLParser xmlParser;
OnThreadCompleted listner;
public XMLParserThread(Context context, String fileName,
OnThreadCompleted listner) {
this.context = context;
this.fileName = fileName;
this.listner = listner;
}
@Override
public void run() {
xmlParser = new XMLParser();
listWeatherCode = new ArrayList<Integer>();
listWeatherDesc = new ArrayList<String>();
listIcon_day = new ArrayList<String>();
listIcon_night = new ArrayList<String>();
String xmlResponse = null;
try {
xmlResponse = xmlParser.getXmlFromFile(context, fileName);
Document doc = xmlParser.getDomElement(xmlResponse);
NodeList nList = doc.getElementsByTagName("condition");
for (int i = 0; i < nList.getLength(); i++) {
Element element = (Element) nList.item(i);
listWeatherCode.add(Integer.valueOf(xmlParser.getValue(element,
"code")));
listWeatherDesc.add(xmlParser.getValue(element, "description"));
listIcon_day.add(xmlParser.getValue(element, "day_icon"));
listIcon_night.add(xmlParser.getValue(element, "night_icon"));
}
Log.e("listWeatherCode", listWeatherCode.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.run();
}
}
我在我的活动中调用我的线程,比如
private void callXMLParserThread() {
String fileName = "weather_conditions.xml";
parserThread = new XMLParserThread(context, fileName,
new OnThreadCompleted() {
@Override
public void OnThreadCompleted() {
Log.e("parserThread State", parserThread.getState()
+ ""); // **Label 2**
}
});
parserThread.start();
Log.e("parserThread State", parserThread.getState()
+ ""); // **Label 1**
}
实验:
我检查了标签 1 中提到的日志将线程的状态返回为WAITING
. 我还检查了我的线程也在执行它的所有操作,
问题
它没有在我的活动中调用我的回调方法,因此我的活动中的日志没有返回任何内容,如标签 2 中所述
请指导我哪里错了?
提前致谢