我的一些用戶的更新適配器(也許50)是越來越崩潰,並顯示以下錯誤:從後臺線程
java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread.
如果我理解正確的話,它造成的一個的AsyncTask的doInBackground()
調用adapter.clear();
和adapter.addAll(list);
方法,我需要將它移動到onPostExecute()
。
問題是我不能再現該錯誤,所以我不能確定它是否修復。 StackOverflow上的一些類似問題似乎表明,僅僅將更新適配器更改爲onPostExecute()
方法並不能解決問題。
有誰知道我可以如何使每次在我的設備上發生此錯誤,以確保修復工作?我不明白它爲什麼在大多數情況下都能正常工作,但有時只會導致崩潰。
你在某一個點做在你的列表中的任何插入?如果你是可以模擬的,看看會發生什麼 – AndroidEnthusiast 2014-09-30 15:56:52
當'mItemCount'不是零並且'mItemCount!= mAdapter.getCount()':[ListView時,拋出'layoutChildren()'中'ListView'的異常。的java(http://grepcode.com/file_/repo1.maven.org/maven2/org.robolectric/android-all/4.1.2_r1-robolectric-0/android/widget/ListView.java/?v=source) – 2014-09-30 16:01:20
我在'doInBackground()'中用適配器做的唯一事情就是'adapter.clear();'和'adapter.addAll(list)'。到目前爲止,我在所有設備上運行了數百次,而不是一次崩潰。 – TimSim 2014-09-30 16:02:31