service 七月十九號實驗

2022-03-03 18:58:22 字數 1944 閱讀 2922

目錄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_stickystart_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,根據題目要求,規定出深搜的深度限制,以減少深搜所需時間。雙向搜...