我之前没有使用过 AsyncTask,也不了解有关它的一些教程,所以我真的不知道如何将它应用于 HttpClient 执行。请帮助我实现这种实现,这是最初的代码:
public void commandModule(String url) {
try {
HttpClient httpClient = new DefaultHttpClient();
httpClient.execute(new HttpGet(url));
} catch (Exception e) {
}
}
@Override
public void onClick(View v) {
if (checkBox1.isChecked()) {
commandModule("http://192.168.1.102/?command1");
} else {
commandModule("http://192.168.1.102/?command2");
}
if (checkBox2.isChecked()) {
commandModule("http://192.168.1.102/?command3");
} else {
commandModule("http://192.168.1.102/?command4");
}
}
最佳答案
如果您了解java中的Thread,那么您将很容易理解android中Async Task的工作原理。基本上,你不能在android的主线程上执行任何长时间运行的任务。它会阻塞主线程,并且您将收到 ANR(应用程序未响应)错误。为了避免这种情况,您可以使用线程或异步任务。 线程有一个限制,您不能从任何其他线程更新 UI 线程。因此,要更新 UI,您需要使用处理程序将消息发送到主/UI 线程。每次使用线程实现某些内容时,您都必须执行此操作。 为了简化,android框架提供了Async Task。
因此,无论您应该在 Thread 的 run()
方法中放入什么,都应该放入 doInBackground()
方法中。
关于java - 在 HttpClient 上应用 Asynctask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27354556/