java - 在 HttpClient 上应用 Asynctask

标签 java android android-asynctask

我之前没有使用过 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/

相关文章:

机器人 : pause/stop webview in recyclerview

android - 在新线程中将值插入数据库会导致进度对话框关闭

java - 如何在暂停主执行而不是 UI 的同时解析 xml 文件

java - 带有 ListView 异步任务的多下载器

java - Android和Tomcat通信?

java - 想要在不重启服务器的情况下重新加载 web.xml

android - 使用 android :imeOptions ="actionNext" in Table Layout 时出现问题

android - 将 AES 与 AndroidKeyStore 结合使用

java - 如何使用 Java 在 Android Studio 的 WebView 中提供网站链接?

java - 为什么 JInternalFrame 删除所有其他组件