我在使用我的应用程序时确实遇到问题。我正在使用AsyncTask类来执行与Sockets一起使用的后台操作。我相信背景很好。
嗯,在我的应用程序中,我有一个UDP侦听器和UDP发送器,它们分别从服务器和服务器侦听任何类型的数据,并且为它们都创建了异步类。现在,我希望通过单击按钮就可以从我的主要活动中执行两个AsyncTask类,并且我有一个停止按钮来停止执行,但是一旦单击停止按钮,线程仍然保持运行,原因是,在调用AsyncTask的onCancelled()
,其调用postexecute()
之后,在我的postexecute()
中,我正在创建AsyncTask类的对象并调用execute,以便侦听器和发送器保持运行,即[C0 ]始终保持通话状态,监听器和发送器保持运行状态。
[我知道在doinBackground()
中创建Asynctask类的对象不是一个好主意,因为它将处于无限循环中,但是如果我能够取消调用postexecute()
的停止按钮上的执行,它将可能对我有用。
请帮助我。
我认为您的问题是,当您取消asynkTask时,实际上实际上是在取消仅在活动中调用的最外面的asynckTask,但是当您递归运行asyncTask的其他实例时,则必须取消他们都让整个事情停了下来。
为什么不从oncancelled()
内部删除代码,然后将其放入方法内部,然后从doInBackground()
内部进行调用,如下所示:
doInBackground()