handler.obtainMessage() 的作用是從當前的Handler中獲取指定的Message以供再次使用
尤其是在監測線程中 如果不斷的new Message() 可能出現錯誤 (錯誤信息已經忘了 沒有記錄 =.=)
有5個重載的方法
- public final Message obtainMessage ()
- public final Message obtainMessage (int what)
- public final Message obtainMessage (int what, Object obj)
- public final Message obtainMessage (int what, int arg1, int arg2)
- public final Message obtainMessage (int what, int arg1, int arg2, Object obj)
what arg1 arg2 obj分別對應Message中的相應成員變量
並且這樣獲得的Message不用再重新定義相應的值 十分好用
一般來講 what是用來switch不同的操作 而其他3個參數都是定義屬性
要注意的是 具有兩個參數的方法只有一個 且第二個參數是Object 而不是arg1
並且如果在2個參數的方法中 將第二個參數填寫為本應該設置為arg1的值(int)時候 也不會報錯 因為:
1. arg1有缺省值0
2. int型可以被自動轉化為Integer
但是arg1的值卻被賦給了msg,obj 所以在Handler中的arg1值就為0了
沒有留言:
張貼留言