如何彻底杀死Android线程?

时间:2011-05-31 10:59:41

标签: 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();
     }
 }

如何杀死服务和线程?我不必担心数据安全问题。

5 个答案:

答案 0 :(得分:36)

杀死线程,我想你可以这样做:

myService.getThread().interrupt();

注意:方法Thread.stop()已弃用

编辑::试试这个

public void stopThread(){
  if(myService.getThread()!=null){
      myService.getThread().interrupt();
      myService.setThread(null);
  }
}

答案 1 :(得分:5)

不推荐使用方法Thread.stop(),您可以使用 Thread.currentThread().interrupt();并设置thread=null

答案 2 :(得分:2)

使用服务的Context.stopService()stopSelf()方法。

答案 3 :(得分:1)

在服务的onDestroy方法

中执行此操作

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)

答案 4 :(得分:0)

@Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        Thread.currentThread().interrupt();
    }