我一直在追查一段代碼剛剛停止工作的問題。終於,我確定的線,如下所示:如果有的話,什麼情況會導致TextView.setText(「」)阻塞?
Log.v(TAG,"Here");
tv.setText("");
Log.v(TAG,"There");
那段塊,第一條語句被調用時,第二個沒有。任何想法可能會造成這種情況?
如果有任何疑問,電視是一個TextView。沒有錯誤打印出來,事實上,這條線以前曾經工作過...
我一直在追查一段代碼剛剛停止工作的問題。終於,我確定的線,如下所示:如果有的話,什麼情況會導致TextView.setText(「」)阻塞?
Log.v(TAG,"Here");
tv.setText("");
Log.v(TAG,"There");
那段塊,第一條語句被調用時,第二個沒有。任何想法可能會造成這種情況?
如果有任何疑問,電視是一個TextView。沒有錯誤打印出來,事實上,這條線以前曾經工作過...
我想出了我的問題是什麼,我在這裏發佈答案,以幫助任何人在未來。這可能是一個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);
它應該已經崩潰了,例外。我忘記了他們使用的確切'RuntimeException'類,但是錯誤消息曾經是「試圖從非UI線程修改UI」的東西。因此,不是使用'ScheduledThreadPoolExecutor',而是使用'postDelayed()'來實現一個不需要後臺線程的定時循環。 – CommonsWare
認真...一個不錯的RuntimeException會爲我節省2個小時... – PearsonArtPhoto
你有沒有添加任何一種監聽器?或者,這是純粹的TextView還是擴展了它? – WarrenFaith
您無法使用顯示的代碼進行阻止。這比你告訴我們的還要多。 – Simon
通常這是一個擴展視圖,但我用純文本視圖試過,效果相同。 – PearsonArtPhoto