【问题标题】:Second AsyncTask never gets called第二个 AsyncTask 永远不会被调用
【发布时间】:2014-11-20 16:56:47
【问题描述】:

我的应用中有两个 AsyncTask,MyClientTask 和 CloseSocket。 MyClientTask 是连接到服务器并输出服务器在文本视图中发送的任何内容并带有通知,我按下按钮连接并向服务器发送消息。它工作正常。 现在,对于 CloseSocket,我想要一个断开连接的按钮来停止连接。它的设置方式与连接按钮完全相同。当然,它是一个不同的 AsyncTask,但它永远不会被调用。没有错误。当我声明按钮以查看其设置是否正确时,我放了一个简单的 System.out,这很有效。我在“doInBackground”中有一个 System.out,它会让我知道它是否被调用,但它没有。我有

 socket.close(), socket.getInputStream().close(), socket.getOutputStream().close()

关闭套接字,但这并不重要,因为 CloseSocket AsyncTask 永远不会被调用。

另外,服务器每 10 秒 ping 一次应用程序进行测试,所以我不知道这是否与它有关。

【问题讨论】:

  • 请显示完整的 onClick() 和 CloseSocket 代码。

标签: android sockets android-asynctask


【解决方案1】:

从 Honeycomb 开始,AsyncTasks 默认串行运行,而不是并行运行。您需要告诉它在 ThreadPoolExecutor 上运行。

if (Build.VERSION.SDK_INT >= 11) {
    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
    task.execute();
}

【讨论】:

  • 我会把这个放在哪里?
  • 您目前在哪里执行任务...?
猜你喜欢
  • 2011-05-28
  • 2016-07-20
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 2013-10-12
  • 2012-03-27
  • 2013-08-29
相关资源
最近更新 更多