我有一个在 onclick 事件中对 Login 类进行分类的 Activity 。我的 Login 类基本上执行 http post 并解析来自服务器的 XML 响应。这发生在 Login 类构造函数的线程内。
我的问题出在这部分:
Login login = new TvsLogin(emailEditText.getText().toString(), passwordEditText.getText().toString());
if(login.isErrorOccurd()){
}
else{
}
基本上,当登录的构造函数发挥作用时,我的其余代码就会被执行,并且 login.isErrorOccurd()
显示为 false,并且即使出现错误,我的 else block 也会被执行。
有什么建议我应该如何解决这个问题吗?登录可能需要一些时间,因此在线程中进行登录是有意义的,但它并没有按照我预期的方式进行。
编辑:
就像 Pixie 所说,我必须使用 AsyncTask。不过,我仍然想在我的 Activity 中进行报告。我该怎么做呢? (这是个好主意,还是我应该在 Activity 的 onPostExecute()
方法中执行此操作?)
最佳答案
这种行为并没有什么奇怪的。调用 login.isErrorOccurd()
方法时,不会在辅助线程中检查登录。您可以使用 Activity.runOnUiThread()
方法通知您的 Activity 有关登录检查结果的信息,或者您可以使用 AsyncTask
类让它为您执行此操作。但无论如何,错误检查将在代码的其他部分进行。
关于java - 当AsyncTask准备好时通知Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5721182/