APP打开后如上图,是使用的viewpager+Fragment的结构,在消息页面有个listview,在每次进入消息页面的时候从网络获取聊天数,并更新显示。
以前版本在这里获取聊天数据的时候使用不可消除的loading框,使得在网络通信之前不可以切换页面,一切正常。
现在吧loading框去掉了,改为给listview增加一个footerview显示加载中...来表示正在加载数据。但是出现一个问题,在消息页面切换的时候就会崩溃,不是每次都崩溃。
消息页面切换是指:进入消息页,立刻离开,然后再进入消息页,立刻离开,反复循环。有时候一两次就崩溃,有时候几十次才崩溃。崩溃信息有两种1: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. Make sure your adapter calls notifyDataSetChanged() when its content 
有时候是:
2:java.lang.IndexOutOfBoundsException: Invalid index N, size is 1 。 N为任意数。
请问这种情况下如何避免以上问题?
PS:网络通信库是用的OkHttp 3.6.0

解决方案 »

  1.   

    但是有新消息总要更新的啊,不能就一开始获取到了,然后就再也不取最新的消息了吧
    这消息不该用Socket长连接么,你这不回到消息界面就不知道有没有新消息了吧或者一直停在消息界面不刷新就不收消息了?
      

  2.   

    但是有新消息总要更新的啊,不能就一开始获取到了,然后就再也不取最新的消息了吧
    这消息不该用Socket长连接么,你这不回到消息界面就不知道有没有新消息了吧或者一直停在消息界面不刷新就不收消息了?
    就是个比较简陋的消息功能,实际上更类似于留言。所以没有用长连接,用的是每次进入获取。内容是不是消息不要在意啊,你可以吧他当做其他的东西嘛
      

  3.   

    好像找到原因了,是因为scrollview嵌套listview的时候,自定义的scrollview和listview的问题,还不能100%确定
      

  4.   

    你用不预加载的viewPager 就可以一直切换