Это сложнее, чем просто убить нить.Вы можете вызвать interrupt () для потока, но поток должен будет периодически проверять свое состояние прерывания и самостоятельно завершать работу.
Во-вторых, вы не захотите начинать тему сразу после того, как пользователь введет текст.Вы быстро сократите систему с порождением потока.Реализуйте период ожидания 100-200 миллисекунд перед выполнением поиска, чтобы вы могли быть разумно уверены, что пользователь закончил печатать.Сервер Google может справиться с нагрузкой, но телефон не сможет.
РЕДАКТИРОВАТЬ: если говорить о моем первом пункте, темы может быть трудно отменить.В этом случае поток диспетчеризации событий должен каким-то образом сообщить работающему потоку, что он должен остановиться.Вы можете использовать средство interrupt
, встроенное в потоки, но оно, как указано в этой статье , может показаться обидным.Вместо этого я бы просто имел переменную boolean
, которая может быть установлена на cancelled
каким-либо внешним потоком.Хитрость (как показано в этой ссылке) заключается в том, что вам нужно будет периодически проверять, был ли поток отменен, и если это так, вам нужно будет вручную прервать.
Следующая проблема, с которой вы столкнетесь, - это если веб-вызов уже был сделан на каком-то внешнем сервере.Он будет блокироваться в этом потоке, пока не вернется, и поток не сможет убить себя.Это может занять несколько секунд.
Итак, давайте поиграем - что если пользователь наберет символ, и по какой-то причине истечет ваш период ожидания, и будет сделан веб-вызов, то пользователь наберет другой символ, когда истечет период ожидания, так что другой веб-вызовсделан?Если ваши веб-вызовы занимают 5 секунд, то первый поток продолжит работу, даже если поток рассылки событий отменит его, как минимум на 5 секунд.Теперь у вас есть два потока, делающих веб-вызовы.
Теперь разверните это.Что если пользователь делает это и создает 4 или 5 потоков?Это где вы перегружаете ресурсы своего телефона.Я не говорю вам не заниматься этим, я просто пытаюсь указать на потенциальные проблемы, которые возникают с территорией.