我正在使用ksoap2-Android来制作和解析我的请求。如果我想使用它,我必须异步。所以我选择为此创建一个新线程。
它看起来像那样,我不发布我的所有逻辑请求和解析因为在这种情况下它并不重要。
new Thread(new Runnable() {
public void run() {
String answer = WebServiceRequests.About();
try{
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}).start();
所以我在 answer 字符串中收到请求,但现在如何更新我的GUI?当我尝试我得到异常,我无法在该线程中更新。
请将您的解决方案发布到此处。如果您使用Handler或AsyncTask甚至可以使用我的示例。
感谢。
答案 0 :(得分:0)
对于异步任务,Android具有类AsyncTask。
在此课程中,您可以覆盖两个方法。第一种方法是应该在后台(不同的线程)的代码。第一个方法完成后,在UI线程上调用第二个方法。
有关详细信息,请参阅android.os.AsyncTask
答案 1 :(得分:0)
AsnycTask始终是第一个推荐,如果您之前没有这样做,请阅读此official dev guide,示例代码:
private class MyAsyncTask extends AsyncTask<Void, Void, String> {
protected String doInBackground(Void... params) {
String answer = WebServiceRequests.About();
return answer;
}
protected void onPostExecute(String answer) {
// Update UI.
showDialog("Answer " + answer);
}
}
启动AsyncTask:
new MyAsyncTask().execute();
一旦后台线程(AKA.doInBackground)完成,保证在将来的某个时刻在UI线程上调用onPostExecute方法。底层框架为我们处理所有肮脏的工作。
希望这有帮助。