開啟handler
的api文件後,我們會看到它的四個構造方法,以及其中兩個的帶有的長長的不推薦及其原因注釋
// 不推薦的構造方法
public
handler()
;public
handler
(handler.callback callback)
;// 推薦構造方法
public
handler
(looper looper)
;public
handler
(looper looper, handler.callback callback)
;
推薦的構造方法中都需要明確傳入looper
物件。這是因為隱式指定looper
物件具有很大的隱患。
雖然每乙個執行緒只能存在乙個looper
物件,但開啟乙個新的執行緒並不會自動建立乙個新的looper
物件(主線程除外,建立主線程時會自動建立乙個looper
物件)。如果我們打算從主線程傳送message
到子執行緒處理,如果沒有在子執行緒建立乙個新的looper
物件,然後new handler()
這樣建立handler
物件就會丟擲錯誤,程式崩潰。
顯式指定handler
關聯的looper
物件比起讓handler
隱式選擇乙個looper
物件的好處顯而易見:它能避免handler
關聯到不是你所期望的執行緒,還能給你提個醒,讓你記得在需要的時候,給子執行緒開個looper
來提取message
。
怎麼樣獲得主線程的looper?
looper有乙個靜態方法,可以獲取到主線程的looper
public
static looper getmainlooper (
);
推薦系統之 UGC標籤推薦方式
資料 演算法 對於上面的演算法,使用者u對物品i的興趣公式如下 p u i b n u,b nb,i p u,i sum b n p u,i b nu,b n b,i 演算法缺點 演算法改進 這裡利用了tf idf的思想,通過上面的公式就可以對熱門標籤進行懲罰。其中分子表示的使用者u的常用標籤,分母...
java構造物件的方式
開發專案中,建立物件時,總是例項化物件,採用物件.set 的方法,當碰到物件的字段很多時,寫的 重複性高,所以總結了建立物件的幾種方式,個人偏愛第一種 一種 構造器模式 例子 共3步 1.構造乙個person物件,裡面的字段name名字 必傳引數 學號 必傳引數 年齡 選傳引數 班級 選 傳引數 2...
建構函式的繼承方式
主要分為兩部分,第一部分是es5環境下的繼承,另外一部分是es6部分的繼承,首先先看es5,如何通過建構函式的形式實現繼承。1 原型鏈繼承function foo name foo.prototype.age function function fn name fn.prototype new fn...