Fragment回调后UI显示异常可能问题

Fragment回调后UI显示异常问题记录

  1. 情况:根据回调的数据或状态变化 UI,UI 未变化或变化异常。

    • 原因:在回调时,该 Fragment 处于隐藏状态,show() 后数据或 UI 状态未改变或显示异常。
    • 解决方法:回调前将数据状态等保存好,重写 onHiddenChanged() 方法,在其中进行相关 UI 数据变化逻辑。
  2. 情况:Fragment UI 或数据不变化,出现空指针

    • 原因:Fragment 中使用 getActivity() 获取了上下文,该方法时常会获取为空
    • 解决:在 Fragment 创建时,自身保存 Activity 引用,之后使用它。
  3. 情况:原本应该显示成功的 Fragment UI 在闪了一下成功之后就没了。

    • 原因:多个线程或进程都有 handler,多个 handler 对同一 UI 进行了 post 修改。具体情况:用户点击,调用系统功能并通过 EventBus 消息改变UI,有 ActivityThread 主线程的 handler,一个子线程的 handler。在系统回调时主线程根据回调准备 post,此时 EventBus 事件逻辑还在执行,子线程完成了系统功能并通过回调进行了 post UI,这时候主线程才完成逻辑,并通过 Activity 注册的 EventBus 进行 post UI 变化,导致 UI 先显示已完成,然后一直显示进行中。
    • 解决: 添加完成状态,在改变 UI 时判断再决定变不变。
  4. 情况:Fragment UI 在数据同步成功执行回调时,只显示了一半的数据,并且显示数据获取失败。

    • 原因1:拥有错误断开后自动重连字段。三处需要获取数据,两处成功,一处失败,成功的回调将失败的状态更新了,但失败处的 UI 控制职责为它自己,因此提示失败,其余两处正常成功。
    • 原因2:有两个地方都注册了同一数据获取的回调,一处成功,另一处失败,失败刷新了获取状态并更新了已获取的数据。导致数据已经获取成功的情况下,依旧提示错误。
    • 解决:添加各自单独的重连状态,对失败单独异步处理。(全部一起重连太耗资源了)。获取数据时删除之前的数据,当其中有一个获取成功,其余共享该数据,修改使用副本,原数据不允许修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值