intentservice是基於service實現的,它會按需求處理一些非同步任務。通過呼叫startservice,客戶端就可以傳送請求了。如果有需要的話,service才會被啟動,在子執行緒依次處理每個intent,處理完任務以後service會停止。使用的時候要繼承intentservice,並實現onhandleintent(intent intent)方法。intentservice會接收intent,開啟乙個子執行緒,並在適當的時候停止service。所有的請求會在乙個單執行緒進行處理,所以在同一時刻只能處理乙個任務。
呼叫oncreate以後,會啟動乙個工作執行緒(handlerthread是繼承thread的),並初始化處理訊息的servicehandler,和工作執行緒的looper進行關聯。
@override
public
void
oncreate()
呼叫這個方法以後,會給mservicehandler傳送一條訊息,任務交由mservicehandler來處理。
@override
public
void
onstart(intent intent, int startid)
收到訊息以後,會呼叫onhandleintent方法,在這個方法裡可以實現自己的邏輯處理。當處理完所有訊息以後,會呼叫stopself來停止service。
private
final
class
servicehandler
extends
handler
@override
public
void
handlemessage(message msg)
}
Redis原始碼學習之 Tcp Socket封裝
anet.h anet.c 主要包含以下幾個封裝函式 這裡僅介紹關於tcp socket的封裝函式 anettcpconnect 建立socket並呼叫底層的connect進行連線。anettcpnonblockconnect 和anettcpconnect功能類似,但是設定連線的socket為非阻...
Java原始碼學習之List
是一種有序的容器 也被稱為序列 使用者可以精確地控制每一元素在list中的插入位置。使用者可以通過元素的索引獲得該元素並且搜尋list中的元素。不同於set,list允許重複的元素。list介面在collection介面之外對iterator,add,remove,equals,hashcode方法...
Python原始碼學習 之bytecode
原始碼 py檔案 或 字串 位元組碼 可快取在 pyc 結果 pythonx.dll libpythonx.x.a pythonx.dll libpythonx.x.a py compilestring pyeval eval compile eval 中通過import使用到的.py檔案會自動編譯...