開始便持久 or 繫結共生死

2021-07-12 04:22:19 字數 2064 閱讀 6887

面試過程中經常會遇到一些試題或者面試官問你startservice 和 bindservice 的區別,今天我們就來分析分析這兩種啟動service方式的差異

通過startservice 啟動service

service會經歷 oncreate --> onstart 

stopservice的時候直接ondestroy 

如果是 呼叫者 直接退出而沒有呼叫stopservice的話,service會一直在後台執行。 

下次呼叫者再起來仍然可以stopservice。

通過bindservice 啟動service

service只會執行oncreate, 這個時候 呼叫者和service繫結在一起 

呼叫者退出了,srevice就會呼叫onunbind-->ondestroyed 

所謂繫結在一起就共存亡了。 

注意:service的oncreate的方法只會被呼叫一次,

就是你無論多少次的startservice又 bindservice,service只被建立一次。

如果先是bind了,那麼start的時候就直接執行service的onstart方法,

如果先是start,那麼bind的時候就直接執行onbind方法。如果你先bind上了,就stop不掉了,

只能先unbindservice, 再stopservice,所以是先start還是先bind行為是有區別的。 

如果沒有程式停止它或者它自己停止,service將一直執行。在這種模式下,service開始於呼叫context.startservice() ,停止於context.stopservice(). service可以通過呼叫android service 生命週期() 或 service.stopselfresult()停止自己。不管呼叫多少次startservice() ,只需要呼叫一次 stopservice() 就可以停止service。

可以通過介面被外部程式呼叫。外部程式建立到service的連線,通過連線來操作service。建立連線調開始於context.bindservice(), 結束於context.unbindservice(). 多個客戶端可以繫結到同乙個service,如果service沒有啟動, bindservice() 可以選擇啟動它。

android中的服務和windows中的服務是類似的東西,服務一般沒有使用者操作介面,它執行於系統中不容易被使用者發覺,可以使用它開發如監控之類的程式。

服務不能自己執行,需要通過呼叫context.startservice()或context.bindservice()方法啟動服務。

這兩個方法都可以啟動service,但是它們的使用場合有所不同。使用startservice()方法啟用服務,呼叫者與服務之間沒有關連,

即使呼叫者退出了,服務仍然執行。使用bindservice()方法啟用服務,呼叫者與服務繫結在了一起,呼叫者一旦退出,服務也就終止,大有「不求同時生,必須同時死」的特點。

如果打算採用context.startservice()方法啟動服務,在服務未被建立時,系統會先呼叫服務的oncreate()方法,

接著呼叫onstart()方法。如果呼叫startservice()方法前服務已經被建立,多次呼叫startservice()方法並不會導致多次建立服務,

但會導致多次呼叫onstart()方法。採用startservice()方法啟動的服務,只能呼叫context.stopservice()方法結束服務,服務結束時會呼叫ondestroy()方法。

如果打算採用context.bindservice()方法啟動服務,在服務未被建立時,系統會先呼叫服務的oncreate()方法,

接著呼叫onbind()方法。這個時候呼叫者和服務繫結在一起,呼叫者退出了,系統就會先呼叫服務的onunbind()方法,

接著呼叫ondestroy()方法。如果呼叫bindservice()方法前服務已經被繫結,

多次呼叫bindservice()方法並不會導致多次建立服務及繫結(也就是說oncreate()和onbind()方法並不會被多次呼叫)。

如果呼叫者希望與正在繫結的服務解除繫結,可以呼叫unbindservice()方法,呼叫該方法也會導致系統呼叫服務的onunbind()-->ondestroy()方法

turtle畫簡筆畫 便便

最近開始學習turtle繪圖記錄一下,自己找了個,練練手。流行漸變色 程式如下 import turtle as t t.pensize 5 畫筆粗細 t.speed 11 畫筆速度 t.colormode 255 r,g,b畫畫模式 color 255step 15for i in range 3...

哈 便便噓噓紅雙喜

今天真是好日子。一喜呢便便噓噓經過超十年甜蜜長跑 轉戰長三角 珠三角四個城市 今天終於執證上崗 雖然喜糖早早就發過啦 不過這裡沒有鼓樓大媽的拍照環境 只好帖個執照合影了 二喜呢sci終於accept啦 看看過程,真是好不容易呢 眼淚嘩嘩地 manuscript id aas20090056 subm...

男人有錢便變壞?

有一句話,幾成經典,曰 男人有錢就變壞,女人變壞就有錢 咱不是女人,自然不通後半句的訣竅 縱使通了也用不上,p 那就說說前半句吧。其實,要說的錢鍾書老先生早就說過了,乙隻猴子蹲在地上的時候,人家看不到它的屁股,但是等它爬樹的時候,屁股就露出來了 三重含義 其一,爬高容易使紅屁股容易暴露,人性的醜陋在...