androidmultithreadingactionbarsherlock

android kill specific thread on action bar event


I want to kill an specific thread but can't figure out a way of make it work. I include all info next, even if it does not seem important:

I use action bar sherlock and want to kill a thread on an action button event. So, i have:

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

This thread is a long running thread, and funcionX() creates some new threads as well. I want to kill the thread when:

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

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

I've tried with ExecutorService, using submit(runnable) for a Future result and Future.cancel but does not seems to work. I should also mention that functionX() uses http get requests to get data from a JSON service.


Solution

  • there are multiple ways you can do this,couple of them can be like

    1. Instead of Thread use TimerTask and call timeTask.cancel() - for interrupting
    2. In the run() method of the thread, keep checking a boolean value to determine whether the thread should be terminated and then you can call interrupt or better throw an Exception