每日一练 20190523
生活随笔
收集整理的這篇文章主要介紹了
每日一练 20190523
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1,如何保證Service不被殺死 ?
參考回答:onStartCommand方式中,返回START_STICKY或則START_REDELIVER_INTENTSTART_STICKY:如果返回START_STICKY,表示Service運行的進程被Android系統(tǒng)強制殺掉之后,Android系統(tǒng)會將該Service依然設置為started狀態(tài)(即運行狀態(tài)),但是不再保存onStartCommand方法傳入的intent對象 START_NOT_STICKY:如果返回START_NOT_STICKY,表示當Service運行的進程被Android系統(tǒng)強制殺掉之后,不會重新創(chuàng)建該Service START_REDELIVER_INTENT:如果返回START_REDELIVER_INTENT,其返回情況與START_STICKY類似,但不同的是系統(tǒng)會保留最后一次傳入onStartCommand方法中的Intent再次保留下來并再次傳入到重新創(chuàng)建后的Service的onStartCommand方法中提高Service的優(yōu)先級 在AndroidManifest.xml文件中對于intent-filter可以通過android:priority = "1000"這個屬性設置最高優(yōu)先級,1000是最高值,如果數(shù)字越小則優(yōu)先級越低,同時適用于廣播; 在onDestroy方法里重啟Service 當service走到onDestroy()時,發(fā)送一個自定義廣播,當收到廣播時,重新啟動service; 提升Service進程的優(yōu)先級 進程優(yōu)先級由高到低:前臺進程 一 可視進程 一 服務進程 一 后臺進程 一 空進程 可以使用startForeground將service放到前臺狀態(tài),這樣低內存時,被殺死的概率會低一些; 系統(tǒng)廣播監(jiān)聽Service狀態(tài) 將APK安裝到/system/app,變身為系統(tǒng)級應用注意:以上機制都不能百分百保證Service不被殺死,除非做到系統(tǒng)白名單,與系統(tǒng)同生共死?2.能否在Service開啟耗時操作 ? 怎么做 ?
參考回答:Service默認并不會運行在子線程中,也不運行在一個獨立的進程中,它同樣執(zhí)行在主線程中(UI線程)。換句話說,不要在Service里執(zhí)行耗時操作,除非手動打開一個子線程,否則有可能出現(xiàn)主線程被阻塞(ANR)的情況;?3.用過哪些系統(tǒng)Service ?
4.了解ActivityManagerService嗎?發(fā)揮什么作用
參考回答: ActivityManagerService是Android中最核心的服務 , 主要負責系統(tǒng)中四大組件的啟動、切換、調度及應用進程的管理和調度等工作,其職責與操作系統(tǒng)中的進程管理和調度模塊類似;?5.廣播有幾種形式 ? 都有什么特點 ?
參考回答:普通廣播:開發(fā)者自身定義 intent的廣播(最常用),所有的廣播接收器幾乎會在同一時刻接受到此廣播信息,接受的先后順序隨機; 有序廣播:發(fā)送出去的廣播被廣播接收者按照先后順序接收,同一時刻只會有一個廣播接收器能夠收到這條廣播消息,當這個廣播接收器中的邏輯執(zhí)行完畢后,廣播才會繼續(xù)傳遞,且優(yōu)先級(priority)高的廣播接收器會先收到廣播消息。有序廣播可以被接收器截斷使得后面的接收器無法收到它; 本地廣播:僅在自己的應用內發(fā)送接收廣播,也就是只有自己的應用能收到,數(shù)據(jù)更加安全,效率更高,但只能采用動態(tài)注冊的方式; 粘性廣播:這種廣播會一直滯留,當有匹配該廣播的接收器被注冊后,該接收器就會收到此條廣播;?
轉載于:https://www.cnblogs.com/jiayonghua/p/10892728.html
總結
以上是生活随笔為你收集整理的每日一练 20190523的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MacOs High Sierra 升级
- 下一篇: mysql的优化总结