Android 甚至通过广播从UI线程更新java.lang.IllegalStateException

Android 甚至通过广播从UI线程更新java.lang.IllegalStateException,android,listview,android-listview,notifydatasetchanged,Android,Listview,Android Listview,Notifydatasetchanged,我想了解为什么我会出现这个错误,我的应用程序崩溃,因为我使用的notifyDataSetChanged是通过广播从主ui线程正确更改的 10-24 14:13:36.563:E/AndroidRuntime(24830):java.lang.IllegalStateException:适配器的内容已更改,但ListView未收到通知。确保适配器的内容不是从后台线程修改的,而是仅从UI线程修改的。确保适配器在其内容更改时调用notifyDataSetChanged()。[在带有适配器(class

我想了解为什么我会出现这个错误,我的应用程序崩溃,因为我使用的notifyDataSetChanged是通过广播从主ui线程正确更改的

10-24 14:13:36.563:E/AndroidRuntime(24830):java.lang.IllegalStateException:适配器的内容已更改,但ListView未收到通知。确保适配器的内容不是从后台线程修改的,而是仅从UI线程修改的。确保适配器在其内容更改时调用notifyDataSetChanged()。[在带有适配器(class com.example.irclient2.Adapter.ConversaAdapter)的ListView(21301099732,class android.widget.ListView)中]

当我收到一条消息(并且我需要更新关于它的ui)时,我会在将消息添加到数据集中后为它发送广播

public void receiveChannelUserMessage(User user, String msg,
        CategoriaMSG category) {

            // creates the message
    Mensagem mensagem = new Mensagem(user.createSnapshot(),
            Colors.removeFormattingAndColors(msg), category, nickcolor);

            // add the message
    canalConversa.addMessage(mensagem);

            // inform UI from broadcast
    Intent it = new Intent(ChatFragment.ACTION_CONVERSASETCHANGED);
    it.addCategory(MyService.CANAL);
    LocalBroadcastManager.getInstance(MyService.this).sendBroadcast(it);

}
这是listview所在片段中的接收器:

private BroadcastReceiver BR_notifyData = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (listview != null) {
            ((ConversaAdapter) listview.getAdapter())
                    .notifyDataSetChanged();
        }
    }
};
接收方在onResume()注册,在onPause()取消注册; 我该怎么办呢?
提前谢谢。

起初我很困惑,但我测试了synchronized,目前正在工作。非常感谢。