2012-11-25 1 views
3

코드 블록이 작동을 멈추는 문제를 추적 해 왔습니다. 마침내, 아래 보이는 것처럼 그 줄을 확인했습니다 :상황에 따라 TextView.setText ("")가 차단 될 수있는 상황은 무엇입니까?

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

첫 번째 문장이 호출되는 동안 두 번째 문장은 호출되지 않습니다. 이걸 일으킬 수있는 어떤 생각?

의심되는 경우, tv는 TextView입니다. 오류가 인쇄되지 않고 실제로이 행은 이전에 한 번 작동했습니다 ...

+0

어떤 종류의 리스너가 추가 되었습니까? 또는이 순수한 TextView입니까 또는 확장 한 있습니까? – WarrenFaith

+0

표시된 코드로 차단할 수 없습니다. 당신이 말하는 것보다 더 많은 것이 있습니다. – Simon

+0

일반적으로 확장 된보기이지만 동일한 효과를 사용하여 순수 텍스트보기로 시도했습니다. – PearsonArtPhoto

답변

1

내 문제가 무엇인지 알아 냈습니다. 앞으로 누군가를 도와 줄 답변을 게시하고 있습니다. 그것은 안드로이드 버그, 또는 이상한 무언가 일 수 있습니다 ... 오류가 게시되었습니다. 결론은 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

관련 문제