目錄startservice:即使使用者不直接與應用程式互動做的事情。這對應於context.startservice()
系統安排服務工作的呼叫 ,直到服務或其他人明確停止它為止。,
bindservice:context.bindservice()
,它允許與服務建立長期連線以便與服務進行互動。
生命週期:
上圖中onstart()方法已經棄用;
流程:oncreat—》onstartcommand--》onbind--》onunbind--》ondestroy
系統可以執行服務有兩個原因。
如果有人呼叫,context.startservice()
那麼系統將啟動服務(建立它並oncreate()
在需要時呼叫其方法),然後onstartcommand(intent, int, int)
使用客戶端提供的引數呼叫其方法。此服務將在此時繼續執行,直到context.stopservice()
或被stopself()
呼叫。請注意,對context.startservice()的多次呼叫不會巢狀(儘管它們會導致多次對onstartcommand()的相應呼叫),因此無論啟動多少次,一旦context.stopservice()或stopself停止服務 ; 服務可以使用它們的stopself(int)
方法來確保在處理啟動的意圖之前不停止服務。
對於已啟動的服務,他們可以決定執行兩種主要的操作模式,具體取決於它們從onstartcommand()返回的值:start_sticky
用於根據需要顯式啟動和停止的服務,同時start_not_sticky
或start_redeliver_intent
用於服務應該只在處理傳送給它們的任何命令時保持執行。。
客戶端還可以context.bindservice()
用於獲取與服務的持久連線。如果服務尚未執行(oncreate()
在執行此操作時呼叫),這同樣會建立服務,但不會呼叫onstartcommand()。客戶端將接收ibinder
服務從其onbind(intent)
方法返回的 物件 ,允許客戶端然後**該服務。只要建立連線,服務將保持執行(客戶端是否保留對服務的ibinder的引用)。通常,ibinder返回的是乙個用aidl編寫的複雜介面。
通過demo類繼承service , 實現關於生命週期的方法,新建activity來呼叫service的方法:
@override
public void oncreate()
@override
public componentname startservice(intent service)
@override
public ibinder onbind(intent intent)
@override
public void onrebind(intent intent)
@override
public void ondestroy()
啟動驗證週期:
1. onbind方法返回值為ibinder,starservice返回為componentname:
2. onstart()方法已經棄用;使用:componentname startservice(intent service)
3.使用: 繼承binder,建立物件, onbind方法返回ibind物件,傳入onserviceconnection方法。
三月十九號
今天去上課了,還是全天的,今天主要在學校學的是關於windows網路的基礎知識。掌握tcp ip網路模型 鏈路層,網路層,傳輸層,應用層。1 網路介面層 功能 在物理連線上,實現邏輯鏈路鏈結。實現在傳輸介質上傳輸位元流 物理層定義了建立,維護和拆除物理鏈路的規範和標準 裝置 物理層 網絡卡,集線器 ...
七月31號集訓筆記
上午補了前天晚上打的一場cf上的題,發現當時沒有做出的那道題,是因為當變數超過一定範圍了,就肯定無解或有特殊解。緊接著,晚上的一道題也是這種思路。看了昨天晚上的那一道dp,這幾天這種分兩部分的dp做的有一丟丟感覺了。下午把第二章結束,做一下知識的總結。hash,通過hash函式將原始資料分割成有限的...
七月29號訓練筆記
昨天上午補了前天下午做的題,發現自己過得幾道題都是簽到.下午從後往前看,主要看了搜尋從剪枝到a 這幾個章節,做一下小總結。剪枝,主要是以各種方法減少搜尋過程中不必要的搜尋分支,每一道題都有適合自己的剪枝方法。迭代加深,類似bfs的dfs,根據題目要求,規定出深搜的深度限制,以減少深搜所需時間。雙向搜...