适配器的内容已更改但ListView未收到通知

我在做android开发,遇到了这样的一个问题:在调接口获取数据后,我使用了Handler对Adapter进行更新,偶尔会出现闪退问题,闪退问题是说:
java.lang.IllegalStateException:适配器的内容已更改但ListView未收到通知.确保不从后台线程修改适配器的内容,而只是从UI线程修改.[在ListView(2131034188,类android.widget.ListView)中使用Adapter(类.MainActivity $ ListAdapter)]
在网上也看了很多,没有能解决掉这个问题,不知道有没有哪位伙伴能帮忙下,谢谢!
代码结构大概如下:

private String mHandler;
private MyAdapter adapter;

Handler handler = new Hanlder(){
      switch(msg.what){
          case 1:
            adapter.notifydatasetchanged();
            break;
    }
}  

private void getList(){
   boolean flag  = api;  //调用api的方法返回值是true还是false,true接口会返回数据,false会返回错误的提示
  if(flag){
    Message msg= new Message();
    msg.what = 1;
    mHandler.sendMessage(msg);
  }
}


private class MyAdapter extends BaseAdapter{
 
}  

以上只是一个简单的结构,伙伴们不要较真代码,列表调用getList()方法,在方法里调用api接口获取数据,得到的数据通过hanlder进行适配器的更新 adapter.notifydatasetchanged();偶尔会出现我上述所说的闪退,【别问有没有初始化,初始化都在create方法里】

你数据是在哪修改的?从你贴的代码中只能看到你在handler 中调用notifydatasetchanged,没看到哪修改数据的啊。是不是在子线程里修改的数据?f放到ui线程更改数据试试

list的数据更新需要先把你适配器中的数据清空,然后在更新,最后调用notifydatasetchanged就可以实现数据更新。
至于你这个闪退,应该是你代码写错了导致的,主要看看报错的位置。

确保不从后台线程修改适配器的内容,而只是从UI线程修改? 这个是错误提示一部分的话,就在更新adapter的地方。加一个

runOnUIThread(){
 if(然后这里判断下activity没有销毁才更新){
  adapter.notifydatasetchanged();
}
}