清晰地理解Service
定義:
Service 是一種執行在後臺的服務,分為本地服務和遠端服務.
- 本地服務是依賴於主執行緒而存在的,而不是單獨個體的執行緒,不需要使用太多的資源
- 遠端服務為獨立的程式,對應程式名格式為所在包名加上你指定的android:process字串。由於是獨立的程式,因此在Activity所在程式被Kill的時候,該服務依然在執行,
1.Service的start和bind狀態有什麼區別?
Service分為兩種啟動方式一種是startService,還有就是BindService.下面分別說下startService和BindService
- startService 啟動Service時 ,表示的是啟動這個Service,這個時候的Service的生命週期是:onCreate,onStartCommond,onDestory,該Service停止的方法是 StopService.
- BindService 啟動Service時,表示的是繫結這個Service,這個時候Service的生命週期是 onCreate,onBind,Service停止的方法呼叫的是UnBindService
2.同一個Service,先startService,然後再bindService,如何把它停止掉?
當一個Service被先startService後再次被bindService了,或者多次被bindService,我覺得應該是不管是多次還是一次,有且只呼叫一次UnBindService.然後再StopService.就可以停止掉了
3.你有注意到Service的onStartCommand方法的返回值嗎?不同返回值有什麼區別?
onStartCommand的返回值有四種:
START_NOT_STICKY
如果當你的Service 在onStartCommand方法返回START_NOT_STICKY ,則當跑完onStartCommand後 殺死了該服務,那麼只有當新的Intent傳進onStartCommand 才會被重建否則不會重建,這是最安全的方法.
START_STICKY
如果當你的Service 在onStartCommand方法返回START_STICKY,則當跑完onStartCommand後 殺死了該服務,系統會重新建立Service,但這裡的Intent不再是沒殺死之前的Intent而是系統給分配的一個新的Intent.該Intent為空.
START_REDELIVER_INTENT
如果系統在onStartCommand()方法返回後,系統就會重新建立了這個服務,並且用傳送給這個服務的最後的Intent物件呼叫了onStartCommand()方法。任意等待中的Intent物件會依次被髮送。這適用於那些應該立即恢復正在執行的工作的服務,如下載檔案
4.Service的生命週期方法onCreate、onStart、onBind等執行在哪個執行緒?
Service 是預設在主執行緒中執行的
相關文章
- 如何清晰地思考
- 如何清晰地描述一個專案架構架構
- Android Service重啟恢復(Service程式重啟)原理解析Android
- k8s 理解Service工作原理K8S
- 什麼是戰略清晰的挑戰地圖? - guidea地圖GUIIdea
- Egg入門學習(二)---理解service作用
- 理解 Istio Service Mesh 中 Envoy 代理 Sidecar 注入及流量劫持IDE
- win10玩絕地求生提示failed to install battleye service解決方法Win10AIBAT
- 如何讓ps文字變清晰 ps模糊文字變清晰教程
- 深入理解四大元件(四)Service 的繫結過程元件
- C#運算子過載---逐步地分析與理解C#
- Service
- Android ServiceAndroid
- k8s之Service詳解-Service使用K8S
- 全網最清晰的ConstraintLayout教程AI
- mysql主從配置(清晰的思路)MySql
- 清晰易懂的Numpy入門教程
- 更加清晰易讀的 cURL 工具
- 清晰圖解深度分析HTTPS原理圖解HTTP
- Android Intent ServiceAndroidIntent
- systemd service unit
- 深入掌握service
- Service Worker初探
- Android Service SecurityAndroid
- What is a service mesh?
- Service Locator 模式模式
- Service詳解
- 建立windows serviceWindows
- 如何優雅地從四個方面加深對深度學習的理解深度學習
- 無參考影像的清晰度評價方法 (影像清晰度的評價指標)指標
- Android Service生命週期 Service裡面的onStartCommand()方法詳解Android
- 【應用服務 App Service】App Service 新手資料包APP
- Service呼叫其他Service的private方法, @Transactional會生效嗎(上)
- 【Azure Bot Service】部署Python ChatBot程式碼到App Service中PythonAPP
- 史上最清晰易懂的babel配置解析Babel
- 專業的影像清晰處理工具
- 影片清晰度最佳化指南
- Service啟動流程