2012-11-25 51 views
3

我一直在追查一段代碼剛剛停止工作的問題。終於,我確定的線,如下所示:如果有的話,什麼情況會導致TextView.setText(「」)阻塞?

Log.v(TAG,"Here"); 
tv.setText(""); 
Log.v(TAG,"There"); 

那段塊,第一條語句被調用時,第二個沒有。任何想法可能會造成這種情況?

如果有任何疑問,電視是一個TextView。沒有錯誤打印出來,事實上,這條線以前曾經工作過...

+0

你有沒有添加任何一種監聽器?或者,這是純粹的TextView還是擴展了它? – WarrenFaith

+0

您無法使用顯示的代碼進行阻止。這比你告訴我們的還要多。 – Simon

+0

通常這是一個擴展視圖,但我用純文本視圖試過,效果相同。 – PearsonArtPhoto

回答

1

我想出了我的問題是什麼,我在這裏發佈答案,以幫助任何人在未來。這可能是一個Android錯誤,或者奇怪的事情......沒有錯誤發佈。底線是,不要在ScheduledThreadPoolExecutor中進行GUI調用。

ScheduledThreadPoolExecutor masterExecutor; 

masterExecutor=new ScheduledThreadPoolExecutor(1); 

masterExecutor.schedule(new Runnable(){ 
    @Override 
    public void run() { 
     //Formerly, I ran the block of code here, that blocked. 
     runOnUiThread (new Runnable() 
     { 
      @Override 
      public void run() { 
       //Now I moved the code inside of a runOnUiThread 
      } 
     }); 

    } 
},1000,TimeUnit.MILLISECONDS); 
+1

它應該已經崩潰了,例外。我忘記了他們使用的確切'RuntimeException'類,但是錯誤消息曾經是「試圖從非UI線程修改UI」的東西。因此,不是使用'ScheduledThreadPoolExecutor',而是使用'postDelayed()'來實現一個不需要後臺線程的定時循環。 – CommonsWare

+0

認真...一個不錯的RuntimeException會爲我節省2個小時... – PearsonArtPhoto

相關問題