zoukankan      html  css  js  c++  java
  • xamarin MasterDetailPage点击Master时卡顿现象

            在很多项目中经常会使用到MasterDetailPage的布局方式,而且一般做为主页面来开发,在开发中,发现一个并不算Bug的问题,但是却发生了,以此记录下来,方便大家探讨。

           现象是这样的,我开发了一个MasterDetailPage页,在Master页点击选中行的时候,Master页收缩,显示Detail页的内容,我的Detail页的内容是一个ListView,并在ListView中显示Master页选中后相应的数据,为了加快切换速度我在Master页点击后使用了Detail页的BindingContextChanged来绑定ListView 的数据,并在BindingContextChanged中开了新的Task来查询数据,当Task查询完数据后,返回主线程将数据显示在Detail页的ListView中,当我这么用的时候,在使用中我发现一个怪现象,就是有的时候我切换的时候会有卡顿现象,即当我们点击Mast页收缩的时候,收缩到一小半被卡顿住了,卡顿住一小段时间后,又好了。虽然不是经常出现,切卡顿时间也不长,但是为追求完美,这个现象不能忍。

         继续追踪发现当我们数据量小的时候反而越容易出现,数据量大的时候却很少遇到。因此想到应该是我的Task查询数据的问题,应为我的Task查询完数据后,如果有数据,那Task会把数据返回给主线程来更新UI,这就是问题症结所在,由于Master页有一个收缩的动画,是在操作UI线程,而我的Task也会操作UI,当收缩动画还没完成的时候,如果Task就已经查完数据,并也开始操作UI的时候,这两者冲突在一起,导致卡顿。

        最后只好在Task中设置Deay(100)这样的方式来确保收缩动画完成后在操作UI。

  • 相关阅读:
    老婆和老媽同時掉在了水裡终于有答案了
    js对象序列化为json字符串
    基于jQuery的单据输入
    重发我的 HTML单据输入控件
    Spring MVC 实现REST风格API版本控制
    匿名方法和Lambda 表达式
    委托的定义和委托的实例化和使用
    LINQ进阶
    C#3.0的新特性
    使用 var 和 object 声明变量有什么区别?
  • 原文地址:https://www.cnblogs.com/zuimengaitianya/p/6077653.html
Copyright © 2011-2022 走看看