2013-01-17 91 views
1

我有一個android應用程序,它有一個線程,它會在每個1分鐘後運行。 所以我的問題是,當我點擊一個按鈕,我不得不重置應用程序,這意味着,它將是一個新鮮的應用程序 。 所以現在當我點擊那個按鈕時,所有的數據庫和共享首選項都會清除。 但是線程會重新啓動。殺死一個線程在android中的睡眠模式

現在使用類似這樣的

if (killthread.isAlive()) { 

      killthread.interrupt();     


      }else { 

       // Here what'll i do, I mean how to kill that thread, which in sleep mode. 

} 

謝謝 毗溼奴

+0

我不熟悉'android',但是在java中,當你想等待另一個步伐時,你可以使用'join'。 –

+0

@ZagorulkinDmitry - 是的,你這樣做。但目前還不清楚他是否需要等待線程。 –

回答

1

如果一個線程是不是還活着就意味着

1)它是死了/成品。你不能/不需要做任何事情。

2)它是新創建/尚未開始。那是Thread.start()還沒有被調用。在這種情況下,Thread.interrupt()將不起作用。你可以做的唯一的事情是一些自定義邏輯 - 通知代碼將開始線程,它不再需要了

+0

感謝您的回覆,在這裏,當我點擊那個按鈕,這將來到其他部分,但1分鐘後,線程將啓動。所以如何在舞臺上停止? – amtest

+0

這個問題似乎更復雜,我最初雖然。儘管如此,看到我的更新,希望它 –

2

感謝您的答覆,在這裏,當我點擊那個按鈕,那將來到其他部分,但1分鐘後,線程將啓動。那麼如何在舞臺上停止?

這將與線程本身有關。我敢打賭,你已經編碼它忽略中斷。


好的,這是您評論中的代碼。

public void run() { 
    while (true) { 
     try { 
      Thread.sleep(60000); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
     } 
    } 
} 

這樣做是爲了捕獲並默默地忽略線程中斷時發生的異常......並繼續前進。

如果你想讓它在一箇中斷時停止,它應該是這個...或者其他相當的東西。

public void run() { 
    while (true) { 
     try { 
      Thread.sleep(60000); 
     } catch (InterruptedException e) { 
      return; 
     } 
    } 
} 
+0

謝謝,你能指定更多? – amtest

+0

你能告訴我們線程正在睡眠的代碼嗎?這將讓我們看到真正的問題是什麼(我覺得) –

+0

公共無效的run(){ \t 而(真){ 嘗試{ \t 了Thread.sleep(60000); }趕上(InterruptedException的發送){// TODO自動生成的catch程序塊 } } } – amtest