安卓 Service啟動的生命週期大雜燴

2021-09-24 04:18:38 字數 1240 閱讀 2368

1、第一次啟動service

oncreate()  ->  onstartcommand() -> (此時service已經在執行) -> (我們**中呼叫 stopservice()) -> ondestroy()
ok 這個就是一場單獨startsever() 啟動service的一次完整的生命週期

2、第二次啟動service(這個第二次啟動 前提是service沒有ondestroy(),不然還是啥第二次呢,這是我的廢話忽略)

oncreate() -> onstartcommand() ->(此時service已經在執行) -> (我們**中繼續呼叫 startservice())-> onstartcommand()
yes!,直接呼叫onstartcommand(),因為該service例項已經存在 不需要呼叫oncreate()

注意:乙個元件啟動乙個服務 ,啟動後元件就不管這個服務了,愛幹嘛幹嘛,就是元件被銷毀,服務還是存在的。同樣元件和該服務是不能直接通訊的哦!

1、第一次繫結服務

oncreate() -> onbind() -> (此時service已經在執行) -> (我們**中呼叫 unbindservice() 或者 繫結該service的元件被銷毀) -> ondestroy()
2、第二次繫結服務

這個時候你肯定大喊我知道 肯定不會呼叫oncreate() ,然後直接呼叫onbind()

嘻嘻,你錯了哦,不會呼叫oncreate(),是對的,但是也不會再次呼叫onbind(),因為只需要繫結一次就足夠!

注意:乙個元件繫結乙個服務 這個時候他們只聯絡在一起的 ,元件被銷毀  這個service也被銷毀  ,同樣,既然繫結了那肯定能通訊,這個通訊以後在細說,本章只說生命週期。

service生命週期的特殊存在 ,乙個服務可以被啟動也可以同時被繫結 ,關鍵點 :啟動服務 然後stopservice 如果該服務被其他元件繫結的話,這個時候這個service不會被銷毀 除非繫結它的元件與它解綁 這個service才能被銷毀。同理同時繫結 和啟動乙個服務 解綁後 這個服務 不會直接銷毀 除非stopservice 這個service才能被銷毀。總結一句話:乙個服務同時被啟動和繫結的話,只有全部 取消繫結和stop 這個服務才能被銷毀 ,不然元件會說:這個服務我正在用呢,你tm可不能銷毀!

安卓開發 service 簡介

service的生命週期方法比activity少一些,只有oncreate,onstartcommand,ondestroy 我們有兩種方式啟動乙個service,他們對service生命週期的影響是不一樣的。1 通過startservice service會經歷 startservice oncr...

安卓之service簡單介紹

一 什麼是service 二 如何使用service 三service的生命週期 一 什麼是service 二 如何使用service package jason.tutorial import android.content.intent import android.os.binder impo...

安卓跨程序繫結service

今天在學習aidl通訊的時候,使用的是兩個應用,乙個充當客戶端,乙個充當服務端,在使用客戶端繫結服務端的服務的時候一直繫結不成功。原來是使用的魅藍機型的問題。上 服務端androidmanifest.xml部分 沒啥說的 客戶端 示例1 魅藍和華為都可以繫結成功 private void binds...