2016-01-07 77 views
2

我做了Service,它啓動時使用Thread。我想在應用程序關閉時繼續運行服務(START_STICKY)。返回START_STICKY從線程服務

爲了使服務保持運行,我必須回到START_STICKY

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      while(true) { 
       try { 
        Thread.sleep(2000); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    }).start(); 
    return START_STICKY; 
} 

我如何用我的線程返回呢?

+2

http://stackoverflow.com/questions/9434179/how-to-keep-a-service-running-in-background-even-after-user-quits-the-app – koutuk

+2

我知道我必須使用START_STICKY但是如果我有一個onStartCommand線程,我該如何返回它? – tomss

+0

我不明白你的問題。 – njzk2

回答

0

這似乎是Thread概念的誤解。您在onStartCommand()中開始的線程不會「阻止」該方法返回。這裏發生的情況如下:

  1. onStartCommand()叫上一些線程(可能是主要原因之一)立即
  2. Thread.start()回報接着返回從onStartCommand()START_STICKY標誌。

其結果有運行的至少兩個線程中,一個在其上onStartCommand()已被調用,另一種執行該方法run()