2012-11-09 32 views
5

我想杀死一个特定的线程,但无法弄清楚它的工作方式。 我接下来包括所有信息,即使它看起来并不重要:android杀死操作栏上的特定线程事件

我使用操作栏sherlock并希望杀死操作按钮事件上的线程。所以,我有:

Thread myThread; 
    myThread = new Thread(new Runnable(){ 
     public void run(){ 
       functionX(); 
     } 
     }); 
    myThread.start(); 

此线程是一个长时间运行的线程,funcionX()也创建一些新线程。 我想,当杀死线程:

public boolean onOptionsItemSelected(MenuItem item){ 
    switch (item.getItemId()) { 

    case android.R.id.home: 
     myThread.interrupt(); 
     break; 
    }; 

我试着ExecutorService的使用提出(可运行),为未来的结果和Future.cancel但似乎并不工作。 我还应该提到functionX()使用http get请求从JSON服务中获取数据。

回答

4

有多种方法可以做到这一点,他们夫妇可以像

  1. 相反线程中使用的TimerTask和调用timeTask.cancel() - 打断
  2. 在的run()方法线程,不断检查一个布尔值,以确定线程是否应该被终止,然后你可以调用中断或更好地抛出异常
+0

+1。建议2是我会用的。如果你正在快速循环一个线程,只需将它包含在顶层,否则通过代码有几个。在处理饥饿的部分之前。 – Doomsknight

+0

谢谢。我会用技巧2去。 –