Как полностью уничтожить поток Android?
У меня есть служба, у которой есть свой поток, выполняющийся на фоне. Я хотел бы убить эту службу, включая поток.
Я создал поток как этот и запустил его.
public class DaemonService extends Service {
private DaemonThread thread;
class DaemonThread extends Thread {
public void run()
{
runDaemon(mArgv.toArray(), mConfig);
}
}
public void onStart(Intent intent, int startId) {
thread = new DaemonThread();
thread.start();
}
}
Как убить службу и поток? Мне не нужно беспокоиться о безопасности данных.
Ответы
Ответ 1
чтобы убить поток, я думаю, вы можете сделать вот так:
myService.getThread().interrupt();
ПРИМЕЧАНИЕ: метод Thread.stop()
устарел
EDIT:: попробуйте
public void stopThread(){
if(myService.getThread()!=null){
myService.getThread().interrupt();
myService.setThread(null);
}
}
Ответ 2
Метод Thread.stop()
устарел, вы можете использовать
Thread.currentThread().interrupt();
и установите thread=null
.
Ответ 3
используйте Context.stopService()
или stopSelf()
метод службы.
Ответ 4
Сделайте это в сервисе onDestroy method
http://developer.android.com/reference/android/app/Service.html#onDestroy()
public void onDestroy(){
thread.stop();
super.onDestroy();
}
Затем остановите службу с помощью stopService(); (это вызовет onDestroy());
http://developer.android.com/reference/android/content/Context.html#stopService (android.content.Intent)
Ответ 5
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Thread.currentThread().interrupt();
}