日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

安卓四大组件之Service

發(fā)布時(shí)間:2025/4/5 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓四大组件之Service 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

很多情況下,一些與用戶很少需要產(chǎn)生交互的應(yīng)用程序,我們一般讓他們?cè)诤笈_(tái)運(yùn)行就行了,而且在他們運(yùn)行期間我們?nèi)匀荒苓\(yùn)用其他的應(yīng)用。為了處理這種后臺(tái)進(jìn)程,Android引進(jìn)了service的概念。

?服務(wù)的特點(diǎn):service在Android中是一種長(zhǎng)生命周期的組件,它不實(shí)現(xiàn)任何用戶界面,是一個(gè)沒有界面的組件,由其他組件開啟。service長(zhǎng)期在后臺(tái)運(yùn)行,執(zhí)行不關(guān)乎界面的一些操作比如:新聞客戶端每隔一段時(shí)間去查看是否有最新的新聞。監(jiān)聽電話來點(diǎn)顯示。service和其他組件一樣,都是運(yùn)行在主線程中,因此不能用它來做耗時(shí)操作。

Android中的進(jìn)程種類:

Android進(jìn)程的回收機(jī)制:

它會(huì)根據(jù)優(yōu)先級(jí)進(jìn)行回收。系統(tǒng)會(huì)盡可能的維持程序的進(jìn)程,當(dāng)系統(tǒng)內(nèi)存不夠用時(shí),會(huì)把空進(jìn)程一個(gè)一個(gè)回收掉。當(dāng)回收完所有的空進(jìn)程時(shí)還不夠用時(shí),繼續(xù)向上回收后臺(tái)進(jìn)程,一次類推。但是當(dāng)回收服務(wù),可視,前臺(tái)著三種進(jìn)程時(shí),系統(tǒng)非必要情況下不會(huì)輕易回收,如果回收掉這三種進(jìn)程,那么在系統(tǒng)內(nèi)存夠用時(shí),會(huì)再給重新啟動(dòng)進(jìn)程。如果是用戶手動(dòng)關(guān)閉的服務(wù),就不會(huì)再重啟了。

Android為什么用服務(wù)而不是線程?

Android程序在第一次啟動(dòng)的時(shí)候會(huì)開啟一個(gè)進(jìn)程給這個(gè)程序來使用。Android一個(gè)應(yīng)用的程序把所有的界面關(guān)閉時(shí),進(jìn)程還沒有被銷毀,現(xiàn)在處于的是空進(jìn)程狀態(tài),而thread運(yùn)行在空進(jìn)程中很容易被銷毀。服務(wù)不容易被銷毀,如果非法狀態(tài)下被銷毀了,系統(tǒng)會(huì)在內(nèi)存夠用時(shí)重新啟動(dòng)。


Android中如何使用service

?創(chuàng)建Service,定義類繼承service,Androidmanifest.xml中定義《service》

?開啟Service,在其他組件中調(diào)用startService方法

?startService在activity中直接調(diào)用,會(huì)執(zhí)行onstartCommand,oncreate只會(huì)執(zhí)行一次,服務(wù)一旦被創(chuàng)建出來,就不會(huì)再執(zhí)行oncreate方法,以后再去開啟服務(wù)只會(huì)執(zhí)行onStarCommend.

停止Service,調(diào)用stopService方法,會(huì)執(zhí)行ondestory()


注意:服務(wù)在執(zhí)行生命周期方法時(shí),也是一個(gè)前臺(tái)進(jìn)程。廣播接收者和它類似,在執(zhí)行生命周期方法onreceive時(shí),也是一個(gè)前臺(tái)進(jìn)程。

Service的生命周期

Service有兩種不同的啟動(dòng)開啟方式,一個(gè)是直接onstart,另一個(gè)是綁定服務(wù)。

? ? ? A:標(biāo)準(zhǔn)開啟模式,被開啟的Service通過其他組件調(diào)用startService被創(chuàng)建。這種服務(wù)可以無限的運(yùn)行下去,必須調(diào)用stopself方法或者其他組件調(diào)用stopService方法來停止它。當(dāng)Service被停止時(shí),系統(tǒng)會(huì)銷毀它。

? ? ?B:綁定模式,被綁定的Service當(dāng)其他組件調(diào)用bindService來創(chuàng)建的。客戶通過一個(gè)ibinder接口和Service進(jìn)行通信。客戶可以通過unbindservive方法來關(guān)閉這種連接。一個(gè)Service可以同時(shí)和多個(gè)客戶綁定,當(dāng)多個(gè)客戶都解除綁定之后,系統(tǒng)會(huì)銷毀Service。

? 注意一點(diǎn)Service的這兩種生命周期并不是完全分開的。也就是說你可以和一個(gè)已經(jīng)調(diào)用了startservice的服務(wù)來進(jìn)行綁定。

兩者的區(qū)別:1,通過start直接啟動(dòng)服務(wù),一旦服務(wù)開啟,就與調(diào)用者沒有任何關(guān)系,調(diào)用者的activity即使退出,也不會(huì)影響后臺(tái)服務(wù)運(yùn)行。而綁定服務(wù)的activity退出了,那么他綁定的服務(wù)也就跟著退出。綁定服務(wù)的activity退出時(shí)重寫activity的Ondestory方法,方法內(nèi)部調(diào)用unbindService,去解除服務(wù)的綁定。

? 2,start直接啟動(dòng)服務(wù)的方法,調(diào)用者不能調(diào)用服務(wù)內(nèi)部的方法。綁定服務(wù)啟動(dòng)時(shí),可以利用Serviceconnection接口獲取服務(wù)的ibinder對(duì)象,通過這個(gè)對(duì)象可以實(shí)現(xiàn)自定義的接口。












總結(jié)

以上是生活随笔為你收集整理的安卓四大组件之Service的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。