优化.md 2.2 KB

对于这两个聊天页面(两个实现几乎一样),需要做优化,第一个要优化的是: 加载聊天历史记录的方式,当前的加载方式是从顶往下加载出最新的聊天记录,导致页面渲染的效果是从页顶往下滑。 这种加载方式是最自然能想到(也最容易实现的),但其展现效果会让用户体验不好。

为了一开始就展示最新的聊天记录,页面固定不动,以下是可实现这目标的方案:

  1. 加载聊天记录的顺序从最新的消息开始加载到页面上,即页面的最底部加载第一条消息,接着在第一条上边加载第二条,如此反复。

  2. 优化后的加载方式,就不应出现边加载聊天记录,边滑动页面。即页面固定住(显示的是最新消息),不随加载更旧的消息时,而向上滚动

  3. 只加载到最近50条,其它的当用户点击“加载更多”才继续加载出来。“加载更多”一次也只加载 100 条,剩下又得点击“加载更多”。 getChatHistory 接口是一次性拉取了所有聊天记录,意思是:

    1. 先只加载 50 条,是从getChatHistory 获取的聊天记录中先取最近的50条
    2. 上拉完已经渲染的50条消息的顶部有“加载更多”。
    2. 如果没有超过50条消息,就没有“加载更多”。
    3. 记录好那些没被加载的聊天数据,随时准备让“加载更多”触发加载出来
    

我将按照你的要求进行以下优化:

  1. 加载最新的消息:页面打开时,直接定位到最新的消息,也就是列表的底部。
  2. 分页加载:首次只加载最近的 50 条消息。当用户向上滚动到顶部时,会显示一个“加载更多”的按钮。
  3. 按需加载:每次点击“加载更多”会再加载 100 条更早的消息,并平滑地添加到列表上方,同时保持用户当前的阅读位置不变,避免页面跳动。
  4. 无缝体验:当所有历史消息都加载完毕后,“加载更多”按钮将不再显示。

在微信端或app上,占击输入框后,输入区域会随输入键盘上移到键盘上方,但消息列表没上移,部分被遮住了,请实现消息也像输入框一样上移到合适位置