在我的mainActivity中,這是我的應用程序的唯一活動,我創建了下面的處理程序並在其中運行一個可運行的程序。我可以在處理程序/可運行內部執行網絡操作(UI阻塞)嗎?
我對處理程序和它們運行的地方有一些誤解。
看到代碼
Handler handler;
@Override
protected void onCreate(Bundle bundle)
{
handler = new Handler();
handler.postDelayed(r , 5000);
}
Runnable r = new Runnable()
{
@Override
public void run() {
FetchServerAndUpdateStatus(); //network stuff in here
handler.postDelayed(r , 5000);
}
}
- 我認爲這個代碼仍然會在UI線程中運行,我就不能在那裏做任何網絡電話沒有?
- 如果是,我該怎麼辦?創建並使用單獨的線程?
- 如果我創建了一個新的線程,我怎樣才能運行postdelayed方法?線程沒有延遲?
- 不使用處理程序/可運行和使用TimerTask的和Runnable接口,而不是一個更好的方法?或者,就像上面的處理程序/ runnable一樣,它也將在UI線程上運行,除非在單獨的內部創建。
我覺得我失去了一些東西。 Handler真的具有可運行的構造函數嗎? – joozek
@ joozek不,他們不。 postdelayed需要壽,我的壞。 – tony9099