冗長な質問だとは思わないでください。よくお読みください。
AsyncTaskのdoInBackground(Void ... params)内に無限ループがあります。そして、doInBackground()内にコールバック関数があります。そのため、cancel()、onCancelled()、およびisCancelled()アプローチを使用してこのタスクを終了することはできません。問題は、実行がコールバック関数で永久に待機することです。したがって、(doInBackground内の)どこにこのisCancelled()チェックを記述して無限ループから抜け出しても、実行されません。
誰かがこの種の問題の解決策を持っていますか?または、誰かがこれに似た要件を持っていましたか?
@Override
protected void onCancelled()
{
// Socket Close
}
@Override
protected Void doInBackground(Void... params)
{
try
{
// Socket Open
while (true)
{
socket.receive();
}
}
catch (Exception e)
{
}
return null;
}