Android编程:在异步任务中遇到TCP问题

Android编程:在异步任务中遇到TCP问题,android,tcp,android-asynctask,Android,Tcp,Android Asynctask,我遇到的问题是,我的程序只能通过异步任务通过TCP发送字符串一次。我已经读到AsyncTask只能运行一次,并且在它运行之后应该释放它,如果我需要发送另一个命令,我应该创建线程的另一个实例,并使用新实例发送新命令。然而,无论出于何种原因,当我尝试创建AsyncTask的第二个实例时,什么都没有发生。值得注意的事情。我在onPostExecute例程中添加了一个日志命令,但从未看到日志消息 我的Android清单文件中包含以下内容: <uses-permission android:name

我遇到的问题是,我的程序只能通过异步任务通过TCP发送字符串一次。我已经读到AsyncTask只能运行一次,并且在它运行之后应该释放它,如果我需要发送另一个命令,我应该创建线程的另一个实例,并使用新实例发送新命令。然而,无论出于何种原因,当我尝试创建AsyncTask的第二个实例时,什么都没有发生。值得注意的事情。我在onPostExecute例程中添加了一个日志命令,但从未看到日志消息

我的Android清单文件中包含以下内容:

<uses-permission android:name="android.permission.INTERNET/> 
我可以看到AsyncTask第一次启动时,它发送命令并从目标设备接收响应。但是,我在日志中没有看到“异步任务”、“已发送命令”,因此onPostExecute没有执行


关于我做错了什么,你有什么想法吗?

目前你没有覆盖
异步任务中的
onPostExecute
,因此将你的onPostExecute签名更改为:

@Override
protected void onPostExecute(ArrayList<String> result)//<Change Long
                                                      // to ArrayList<String>
  {
       Log.d("Async Task", "Command Sent");
  }
@覆盖

受保护的void onPostExecute(ArrayList结果)//您的
onPostExecute
签名错误

protected void onPostExecute(Long result)
应该是

protected void onPostExecute(ArrayList<String> result)
受保护的void onPostExecute(ArrayList结果)
使用
@Override
注释也很好


在您的
Send_命令中添加一些额外的调试消息
AsyncTask
可能挂在那里。

Wow感谢您的快速响应。我按照建议对onPostExecute进行了调整,但是它仍然没有显示在日志文件中,也没有运行AsyncTask的新实例。如果线程不会自行消亡,有没有办法杀死它?谢谢。当我下班回家后,我会添加更多日志记录,以更详细地跟踪异步任务。对于那些认为需要否决投票的人,请记住我是android编程和java新手。我来自Windows,编程AMX/Crestron系统,并有一些爱好.net编程。所以,如果我犯了一个你认为微不足道的错误,请保留否定的判断,不要评论。相反,请帮助其他用户:感谢帮助我的人,非常感谢。我刚到家,我现在会多做一些日志记录,看看是否能解决这个问题。好吧,我现在觉得自己很愚蠢。问题是我的while((Response=rd.readLine())!=null)循环中有一个无限循环。一旦我修复了这个循环,AsyncTask的实例就非常有效。
@Override
protected void onPostExecute(ArrayList<String> result)//<Change Long
                                                      // to ArrayList<String>
  {
       Log.d("Async Task", "Command Sent");
  }
protected void onPostExecute(Long result)
protected void onPostExecute(ArrayList<String> result)