我想實現一個自動建議像我的應用程序的一部分功能。作爲其中的一部分,當用戶鍵入到文本字段中時,我爲結果ping Web服務,解析xml並使用返回結果列表更新列表視圖。安全的方法來停止線程 - Android
這是我的程序的基本流程。我的問題是如果我以正確的方式停止線程。調用thread.interrupt()是否足夠?
init() {
// <snip>
searchTxt.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
FetchResults();
}});
}
private void FetchResults()
{
if(mCurrentNetworkThread != null)
{
mCurrentNetworkThread.interrupt();
mCurrentNetworkThread = null;
}
mCurrentNetworkThread = new Thread(
new Runnable() {
public void run() {
List<NameValuePair> paramTable = new ArrayList<NameValuePair>(1);
paramTable.add(new BasicNameValuePair("searchText", searchTxt.getText().toString()));
String methodName = "GetSearchResults";
NetworkAccessClass nac = new NetworkAccessClass(paramTable, IP_ADDR, methodName, 0, this);
nac.startRequest();
}
});
mCurrentNetworkThread.start();
}
@Override
public void requestSucceeded(String responseMessage, int callID) {
parseResponseFromNetwork(responseMessage);
}
@Override
public void requestFailed(String responseCode, int callID) {
}
謝謝,我會走到這一點,但我是比較新的Android和不想進入尚未處理兼容性問題。稍後將標記爲重構:) – 2011-04-15 14:38:01