深入原始碼學習IntentService

2021-10-02 22:33:00 字數 1364 閱讀 8488

那麼intentservice就是為了解決這個問題而出現的,在intentservice是乙個可以執行非同步任務的service,同時在執行完成非同步任務後,會自動銷毀的service,實現了**封裝的同時,避免了資源的浪費。

如下**所示,可以看到原始碼並不是很多,但是整個設計還是非常優雅的,它裡面主要是通過handlerthread建立了乙個子執行緒,handlerthread又自動生成了乙個looper,所以intentservice就可以建立本地執行緒的handler,並傳入handlerthread的looper,實現訊息處理。

因為每次通過intent開啟service,都會執行onstartcomand操作,它在裡面執行了onstart方法,onstart方法裡面會執行onhandleintnet這個抽象方法,以供實現類在裡面進行耗時操作,進行完onhandleintent之後,就會呼叫stopself方法停止該service,釋放資源。

public

abstract

class

intentservice

extends

service

@override

public

void

handlemessage

(message msg)

}public

intentservice

(string name)

public

void

setintentredelivery

(boolean enabled)

@override

public

void

oncreate()

@override

public

void

onstart

(@nullable intent intent,

int startid)

@override

public

intonstartcommand

(@nullable intent intent,

int flags,

int startid)

@override

public

void

ondestroy()

@override

@nullable

public ibinder onbind

(intent intent)

@workerthread

protected

abstract

void

onhandleintent

(@nullable intent intent)

;}

深入到了原始碼層面

這是看到的原話,上來就是四道演算法題,前兩道都是 劍指offer 上的題改編過來的,後面兩道則完全沒見過,感覺有點超長發揮了,四道題目都做到了最有優,演算法很重要的啊,原來,這是生死的榮譽之戰,一面先是聊專案,重點聊了下專案中涉及到的非同步載入 快取策略 執行緒池 listview效能優化 分頁載入...

深入JDK原始碼之Hashtable

the hash table data.private transient entry table hashmap中的table使用預設修飾符,即同一包內可見 hashtable bucket collision list entry private static class entryimplem...

Promise原始碼深入理解

promise的第一版實現 function mypromise constructor function reject reason 捕獲構造異常 try catch e mypromise.prototype.then function onfullfilled,onrejected var p...