我有这个活动,在onclick事件中对一个Login类进行分类。我的Login类基本上都是一个http帖子,并解析来自服务器的XML响应。这发生在Login类的构造函数中的一个线程内。
我的问题在于这部分:
Login login = new TvsLogin(emailEditText.getText().toString(), passwordEditText.getText().toString());
if(login.isErrorOccurd()){
}
else{
}
基本上,虽然login的构造函数正在做它的魔力,但我的其余代码会被执行并且login.isErrorOccurd()
显示为false并且我的else块会被执行,即使出现错误也是如此。
有任何建议我应该如何解决这个问题?登录可能需要花费时间,因此在一个线程中执行它是有意义的,但它并没有按照我预期的方式运行。
修改
像Pixie说的那样,我将不得不使用AsyncTask。我仍然想在我的活动中进行报告。我该怎么做呢? (这是一个好主意,还是我应该在我的Activity中的onPostExecute()
方法中执行此操作?)
答案 0 :(得分:1)
这种行为并不奇怪。调用login.isErrorOccurd()
方法时,不会在辅助线程中检查登录。您可以使用Activity.runOnUiThread()
方法通知您的活动有关登录检查结果的信息,或者您可以使用AsyncTask
类让它为您执行此操作。但无论如何错误检查将在代码的其他部分。