我想实现一个自动建议像我的应用程序的一部分功能。作为其中的一部分,当用户键入到文本字段中时,我为结果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