android杀死动作栏事件的特定线程

Moi*_* B. 6 multithreading android actionbarsherlock

我想杀死一个特定的线程,但无法想出让它工作的方法.我接下来包括所有信息,即使它看起来不重要:

我使用动作栏sherlock并想要在动作按钮事件中杀死一个线程.所以我有:

    Thread myThread;
    myThread = new Thread(new Runnable(){
        public void run(){
                functionX();
        }
      });
    myThread.start();
Run Code Online (Sandbox Code Playgroud)

这个线程是一个长时间运行的线程,funcionX()也创建了一些新线程.我希望在以下情况下杀死该线程:

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

    case android.R.id.home:
        myThread.interrupt();
        break;
    };
Run Code Online (Sandbox Code Playgroud)

我尝试使用ExecutorService,使用submit(runnable)获取Future结果和Future.cancel,但似乎不起作用.我还要提一下,functionX()使用http get请求从JSON服务获取数据.

roc*_*win 5

有多种方法可以做到这一点,其中几种可能就像

  1. 而不是Thread使用TimerTask并调用timeTask.cancel() - 用于中断
  2. 在线程的run()方法中,继续检查一个布尔值以确定是否应该终止该线程,然后你可以调用中断或者更好地抛出异常