2013-04-03 40 views
1

我想了解如何looper.loop工作,以及何時使用它在我的代碼。 我有一個可運行的綁定服務。裏面我有一個處理程序,用於保存更新Ui的代碼。這是代碼。Looper.loop不叫,但仍執行在處理程序代碼

private Runnable builder = new Runnable() { 
public void run() 
{ 
    while(isThreadStarted == true) 
    { 
    if (newgps == 1) 
    { 
     Handler handler = new Handler(Looper.getMainLooper()); 
     handler.post(new Runnable() { 
         public void run() { 
         //some code that updates UI 
         } 
       } 
      } 
     } 
    } 
    looper.prepair 
} 
  1. 從我讀活套。準備必須在處理程序完成之前調用。但我注意到我沒有這樣做,但是這個代碼仍然有效。這怎麼可能?
  2. 我想解決這個問題,但林不知道放在哪裏loper.loop。因爲這個處理程序被多次調用。如果我在.prepare之後放置looper.loop,會不會有問題?然後.quit何時isThreadStarted == false?

回答

0

Handler與UI線程相關的,因爲你把它連接到Looper.getMainLooper()。在UI線程準備了Looper在應用程序啓動,所以這是什麼應用程序必須做自己。

0

使用Looper.getMainLooper(),你會得到主線程的Handler,你是張貼在主線程。主線程在創建時已經由系統準備好了其活套。