被啟動型別的服務必須管理它自己的生命週期。也就是說除非系統要**系統記憶體,否則系統不會終止或銷毀這個服務,在onstartcommand()方法返回後,這個服務會繼續執行。因此而這種型別的服務必須通過呼叫stopself()方法或另乙個元件通過呼叫stopservice()方法才能終止。
一旦用stopself()方法或stopservice()方法請求終止服務,那麼系統一有可能就會銷毀這個服務。
但是,如果你的服務同時處理多個對onstartcommand()方法的請求,那麼在你完成請求啟動過程時,不應該終止這個服務,因為你的服務可能正在接受乙個新的啟動請求(在第乙個請求結束時終止服務有可能會終止第二個請求)。要避免這個問題,你能夠使用stopself(int)方法來確保你請求終止的服務始終是基於最近啟動的請求。也就是說,呼叫stopself(int)方法時,你要把那個要終止的服務id傳遞給這個方法(這個id是傳送給onstartcommand()方法的)。這樣如果服務在你呼叫stopself(int)方法之前收到了乙個新的啟動請求,那麼這個id就會因不匹配而不被終止。
警告:重要的是你的應用程式要在工作結束時終止它們的服務,從而避免浪費系統資源和電池電量。如果需要,其他的元件能夠呼叫stopservice()方法終止服務。即使對於能夠繫結的服務,如果這個服務接收了對onstartcommand()方法的呼叫,你也必須自己來終止這個服務。
關於服務的生命週期的更多資訊,請看「管理服務的生命週期」
Android Service簡單總結
分兩種 local service 不少人又稱之為 本地服務 是指client service同處於乙個程序 remote service 又稱之為 遠端服務 一般是指service處於單獨的乙個程序中 remote service 常用的有兩種實現 messenger 信使 使用廣播通訊,serv...
Android Service相關知識
public void oncreate l.d wmodel.time,oncreate耗時 system.currenttimemillis s1 public static string getprocessname context cxt,int pid if procinfo.pid pi...
Android Service 啟動服務
你能夠通過把乙個intent物件 指定要啟動的服務 傳遞給startservice 方法,從乙個activity或其他的應用程式元件啟動服務。android系統呼叫服務的onstartcommand 方法,並且給它傳遞intent物件 你不應該直接呼叫onstartcommand 方法 例如,乙個a...