2014-06-06 46 views
0
Runnable runner = new Runnable() { 

    @Override 
    public void run() { 
     Movie m = adapter.getItem(id); 
     m.setTitle(title); 

     View v = listView.getChildAt(id); 
     if (v != null) { 
      ProgressBar p = (ProgressBar) v.findViewById(R.id.progressBar1); 
      if (p != null) 
       p.setVisibility(View.GONE); 
     } 

     adapter.notifyDataSetChanged(); 
     this.notify(); 
    } 
}; 

synchronized (runner) { 
    runOnUiThread(runner); 

    try { 
     runner.wait(); 

    } catch (InterruptedException e) { 
    } 

} 

上面的代碼導致崩潰。我不知道爲什麼。它應該在ui線程上運行,這樣我可以禁用進度條並更新電影信息。任何人都可以幫助我嗎?IllegalMonitorStateException Java Android

回答

2

我不知道爲什麼。

您沒有提供一個堆棧跟蹤,但我承擔這是在調用this.notify()

Object.notify()文檔:

拋出:
IllegalMonitorStateException - 如果當前線程不是這個對象監視器的所有者。

換句話說,你需要:

synchronized (this) { 
    this.notify(); 
} 

始終看的異常堆棧跟蹤,並隨時諮詢文件,看它是否exlpains爲什麼你得到例外。

相關問題