只是想知道做什麼用冰淇淋三明治發生了......onCancelled()似乎目前存在的在冰淇淋三明治
我從一臺服務器有一個簡單的AsyncTask
讀取數據。當斷開按鈕被點擊時,然後調用lServerTask.cancel(true);
,它已成功呼叫onCancelled()
,設置m_Running = false;
因此突破protected void doInBackground(Void...params)
中的while循環。
使用我的Galaxy Nexus,我單擊斷開按鈕,但任務不會退出。並且仍然連接到服務器。有沒有人有任何想法?
非常感謝
馬克
代碼僅供參考 -
// automatically done on worker thread (separate from UI thread)
protected Void doInBackground(Void...params)
{
while(m_Running)
{
try
{
lRDS.readSocket();
}
catch (IOException e)
{
lRDS.disconnectFromServer();
publishProgress(e.toString());
return null;
}
lDataBuffer = lRDS.getDataBuffer();
publishProgress(lDataBuffer);
}
return null;
}
@Override
protected void onCancelled()
{
m_Running = false;
connectRDSButton.setEnabled(true);
disconnectRDSButton.setEnabled(false);
}
,並從UI方面:
private class disconnectRDSButtonHandler implements View.OnClickListener
{
public void onClick(View v)
{
editRobotData.setText("Disconnect...");
if (lRobotDataServerTask.cancel(true) == true)
{
editRobotData.setText("Disconnected...");
}
}
}
請將您的更新作爲實際答案發布,然後接受您自己的答案。 – 2012-02-06 17:32:06