什麼時候用IntentService

2022-04-11 19:03:11 字數 506 閱讀 2299

intentservice是繼承自service類的,在執行耗時操作時,其實,只需要在service中的onstartcommand(主線程)新啟乙個執行緒即可,那intentservice什麼時候用來會比較好呢?

我們通過startservice多次啟動了intentservice,這會產生多個job,由於intentservice只持有乙個工作執行緒,所以每次onhandleintent只能處理乙個job。面多多個job,intentservice會如何處理?處理方式是one-by-one,也就是乙個乙個按照先後順序處理,先將intent1傳入onhandleintent,讓其完成job1,然後將intent2傳入onhandleintent,讓其完成job2…這樣直至所有job完成,所以我們intentservice不能並行的執行多個job,只能乙個乙個的按照先後順序完成,當所有job完成的時候intentservice就銷毀了,會執行ondestroy**方法。

所以在批量執行任務時,如果對效能開銷有嚴格要求時,可以考慮使用intentservice。

什麼時候用exists 什麼時候用in

in not in exists not exists 使用exists,oracle會首先檢查主查詢,然後執行子查詢直到它找到第乙個匹配項,這就節省了時間。oracle在執行in子查詢時,首先執行 子查詢,並將獲得的結果列表存放在乙個加了索引的臨時表中。在執行子查詢之前,系統先將主查詢掛起 待子查...

什麼時候用GET?什麼時候用POST?

get和post兩種方法都是將資料送到伺服器,但你該用哪一種呢?http標準包含這兩種方法是為了達到不同的目的。post用於建立資源,資源的內容會被編入http請示的內容中。例如,處理訂貨表單 在資料庫中加入新資料行等。當請求無 時 如進行搜尋 便可使用get方法 當請求有 時 如新增資料行 則用p...

什麼時候用堆,什麼時候用棧?

參考文章 c 面試題之記憶體分配 一 首先,回顧一下c c 的記憶體分配機制。乙個c c 程式編譯時記憶體分為5大儲存區 堆區 棧區 靜態區 全域性區 文字常量區 儲存字串常量 程式 區 存放二進位制程式 下面主要闡述前面三個。1 靜態儲存區域 靜態儲存區域的 內存在程式編譯時就已經分配好,這塊內存...