我正在创建一个从在线获取值的程序。我使用AsynTask
类进行后台处理。我从web获取一些值并在类变量中设置值。我的问题是值在很晚才设置变量。并且我的执行进一步处理并找到变量值null。如何检查doInBackground()
方法是否已完全处理,值是否设置为变量。这样我就可以使用这些变量值了。
答案 0 :(得分:0)
最好的方法之一是使用一种observer
设计模式。
首先创建一个包含方法的接口(取决于你的返回值等):
public interface OnTaskCompleted{
void onTaskCompleted(String xml);
}
然后,您需要implement
此活动的界面,实例化您的asynctack
,请参阅:
public class MainActivity extends SherlockFragmentActivity implements OnTaskCompleted
然后完成,你将把MainActivity的实例(由 polymorphisme 也是OnTaskCompleted
)传递给你的asyntask。 这里我的asyntask类处理程序名为XMLParser
public class XMLParser {
private OnTaskCompleted listener;
public XMLParser(OnTaskCompleted mainActivity, String url){
getXMLFromURL(mainActivity,url);
}
[......]
//here when the work is done you call the OnTaskComplete Method
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
//CALL HERE
listener.onTaskCompleted(result);
}
}
我希望它会对你有所帮助。对我来说就像是一种魅力。