Если у вас нет доступа к источнику для потока демона, вы сможете остановить его с помощью Thread.interrupt();
Если у вас есть исходный код вашего потока демонов, он должен периодически просыпаться, чтобы протестировать свою среду.
то есть, он должен пробудиться от того замка, который у него есть, и снова пройти через свой цикл.
Затем вы просто добавляете логическое значение внутри цикла, чтобы проверить, должно ли оно завершиться или нет.
public void run(){
running = true;
while(running){
// do your wait task
}
}
public void cancel(){
running = false;
}
У многих вещей, которые блокируют, есть флаг, который определяет, как долго ждать, например, ServerSocket.
В целом основные принципы Java для обработки потоков также работают и в Android, главное отличие в том, что чем сильнее вы работаете с устройством, тем хуже производительность. Вот небольшая ссылка, которая содержит некоторую информацию об остановке потоков.
http://docs.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html
См. Раздел на Thread.stop ().