2012-03-23 73 views
1

我有這個線程,其作爲服務運行:android是我的應用程序還在運行?

public void run() { 
     try { 
      while(true) { 
       Thread.sleep(timeInterval); 
       results = sendGetMessage(); 
       b.putString("results", results); 
       receiver.send(2, b); 
      } 
     } catch (InterruptedException e) { 
      results = e.toString(); 
     } 
    this.stop(); 
    } 

我想編寫一個簡單的函數,它會檢查,如果我的應用程序仍在運行(以取代永恆的,而(TURE)我已經寫)。 類似於:while(isMyAppRunning)。 我現在的問題是,即使我關閉應用程序,該服務繼續運行.. 有人可以請友好,給我一個代碼示例?

+0

PS你不應該叫'stop()' – 2012-03-23 09:53:24

+0

爲什麼不呢?我應該如何停止服務? – 2012-03-23 10:18:37

+0

這是'Thread.stop()',對不對?只是刪除它。當run()結束時,線程停止。 'stop()'強制停止自Java 1.1以來已被棄用的線程。 – 2012-03-23 14:59:43

回答

0

反過來做。在Thread子類中創建布爾標誌running。將其作爲true啓動,並使用shutdown()方法將其設置爲false。從ActivityonPause()方法中調用此方法。

0

當您不再需要服務時,您可以使用context.stopService(Intent service);停止服務。您可以在服務onDestroy()方法中執行所有維護以停止線程等。

你也可以有一些boolean,當應用程序存在時你可能會設置爲false,儘管我自己更喜歡第一個解決方案。

+0

只要應用程序正在運行,就需要我的服務。 正如你所說我想做一個布爾值,將標誌如果應用程序存在或不,我只是不知道該怎麼做.. :) – 2012-03-23 09:55:53

+0

你可以有一個靜態布爾值(例如在一個類,擴展應用程序)並將其設置爲false。 – Joru 2012-03-23 09:58:04

+0

如果我有一個擴展Application類的類,它會是第一次加載,只要我運行該應用程序? – 2012-03-23 10:23:19

相關問題