我們都知道handler中的post方法,並且也是經常使用它
handler.post(new runnable()
再看一下sendmessagedelayed的原始碼:
public final boolean sendmessagedelayed(message msg, long delaymillis)
return sendmessageattime(msg, systemclock.uptimemillis() + delaymillis);
}這裡面有個關鍵就是方法getpostmessage(r)這個方法,他將runnable轉成乙個message,他內部到底幹了什麼呢?看一下他的原始碼:
private final message getpostmessage(runnable r)
這裡面就是將runnable轉化成乙個message,其他看他的**很簡單,就是先獲取乙個空訊息message.obtain(),然後將message中的callback的值設定成runnable,這時候就了解到了message中的callback的作用了!
同時也了解一下view.post(runnable r)方法的作用:看一下例項**:
final button btn = (button)findviewbyid(r.id.btn);
btn.post(new runnable()
});
}上面的**就是更新btn中的內容,同樣下面的**也可以達到這種效果:
handler handler = new handler();
final button btn = (button)findviewbyid(r.id.btn);
handler.post(new runnable()
});
}不同是這個是用handler.post方法,乙個是用view.post方法,現在來看一下view.post方法的源**:
public boolean post(runnable action) else
return handler.post(action);
}方法中主要的功能**就是attachinfo.mhandler,獲取當前執行緒的hanlder,和我們在乙個執行緒中定義乙個handler的效果是一樣的。
Android中的Handle基礎應用一
下面來個例子 public class myhandleactivity extends activity catch interruptedexception e system.out.println sleep over message msg new message bundle b new ...
執行緒的handle和tid
執行緒是cpu分配時間執行任務的最小單位。在linux中,核心並沒有執行緒和程序的概念,所謂執行緒,只是可以和其他兄弟執行緒共享資源的程序。在posix中,pthread create建立執行緒,並將執行緒的handle或者說id傳遞給第乙個引數,在這還是稱其為handle。這個handle與pth...
selenium學習 8 handle的切換
在我們進行測試的過程中,經常會遇到點開超連結開啟另乙個新視窗的情況,即 target blank 這種情況下,如果要在新視窗進行操作,需要將焦點移到新視窗上,本文將介紹這種情況的處理 切換視窗的方法 1 獲取當前頁面視窗的控制代碼 current window handle 2.獲取所有頁面視窗的控...