參考回答: onStartCommand方式中,返回START_STICKY或則START_REDELIVER_INTENT START_STICKY:若是返回START_STICKY,表示Service運行的進程被Android系統強制殺掉以後,Android系統會將該Service依然設置爲started狀態(即運行狀態),可是再也不保存onStartCommand方法傳入的intent對象 START_NOT_STICKY:若是返回START_NOT_STICKY,表示當Service運行的進程被Android系統強制殺掉以後,不會從新建立該Service START_REDELIVER_INTENT:若是返回START_REDELIVER_INTENT,其返回狀況與START_STICKY相似,但不一樣的是系統會保留最後一次傳入onStartCommand方法中的Intent再次保留下來並再次傳入到從新建立後的Service的onStartCommand方法中 提升Service的優先級 在AndroidManifest.xml文件中對於intent-filter能夠經過android:priority = "1000"這個屬性設置最高優先級,1000是最高值,若是數字越小則優先級越低,同時適用於廣播; 在onDestroy方法裏重啓Service 當service走到onDestroy()時,發送一個自定義廣播,當收到廣播時,從新啓動service; 提高Service進程的優先級 進程優先級由高到低:前臺進程 一 可視進程 一 服務進程 一 後臺進程 一 空進程 可使用startForeground將service放到前臺狀態,這樣低內存時,被殺死的機率會低一些; 系統廣播監聽Service狀態 將APK安裝到/system/app,變身爲系統級應用 注意:以上機制都不能百分百保證Service不被殺死,除非作到系統白名單,與系統同生共死
2.可否在Service開啓耗時操做 ? 怎麼作 ?android
參考回答: Service默認並不會運行在子線程中,也不運行在一個獨立的進程中,它一樣執行在主線程中(UI線程)。換句話說,不要在Service裏執行耗時操做,除非手動打開一個子線程,不然有可能出現主線程被阻塞(ANR)的狀況;
3.用過哪些系統Service ?安全
4.瞭解ActivityManagerService嗎?發揮什麼做用app
參考回答: ActivityManagerService是Android中最核心的服務 , 主要負責系統中四大組件的啓動、切換、調度及應用進程的管理和調度等工做,其職責與操做系統中的進程管理和調度模塊相似;
5.廣播有幾種形式 ? 都有什麼特色 ?操作系統
參考回答: 普通廣播:開發者自身定義 intent的廣播(最經常使用),全部的廣播接收器幾乎會在同一時刻接受到此廣播信息,接受的前後順序隨機; 有序廣播:發送出去的廣播被廣播接收者按照前後順序接收,同一時刻只會有一個廣播接收器可以收到這條廣播消息,當這個廣播接收器中的邏輯執行完畢後,廣播纔會繼續傳遞,且優先級(priority)高的廣播接收器會先收到廣播消息。有序廣播能夠被接收器截斷使得後面的接收器沒法收到它; 本地廣播:僅在本身的應用內發送接收廣播,也就是隻有本身的應用能收到,數據更加安全,效率更高,但只能採用動態註冊的方式; 粘性廣播:這種廣播會一直滯留,當有匹配該廣播的接收器被註冊後,該接收器就會收到此條廣播;