用户界面的刷新方法和装置的制造方法

文档序号:10593887阅读:280来源:国知局
用户界面的刷新方法和装置的制造方法【专利摘要】本发明提供一种用户界面的刷新方法和装置,通过在TableViewModel中定义两个变量:未来数据源和当前数据源,当用户界面的数据被更新时,对未来数据源进行更改,此时并没有真正刷新用户界面,而是当延迟定时器到时时,才将未来数据源的值复制给当前数据源,对用户界面进行一次刷新,通过延迟刷新避免短时间内频繁对用户界面刷新。【专利说明】用户界面的刷新方法和装置
技术领域
[0001]本发明涉及互联网技术,尤其涉及一种用户界面的刷新方法和装置。【
背景技术
】[0002]即时通讯(InstantMessagin,简称IM)是一种可以让使用者在网络上建立某种私人聊天室(chatroom)的实时通讯服务。众所周知,IM类的应用数据变更频繁、数据量大,如果采用实时刷新的策略,难免会造成用户界面卡顿、性能低下的后果,甚至有些时候,应用直接长时间卡住,达到不可用的状态。而应用的界面流畅度,是影响用户体验最直接、也是最重要的一项指标。[0003]大部分的即时通讯服务提供了状态信息的特性——显示联络人名单,联络人是否在线及能否与联络人交谈,UITableView是1S中使用最频繁、也是最重要的控件之一,它为需要以list方式展示的数据提供了很好地展示方案,它的可重用机制极大的优化了应用性能。但是当IM的用户界面的数据源频繁发生更改时,频繁的刷新会使得用户界面卡顿,性能降低。【
发明内容】[0004]本发明提供一种用户界面的刷新方法和装置,避免了短时间内频繁更新用户界面。[0005]本发明第一方面提供一种用户界面的刷新方法,包括:[0006]当用户界面的数据被更新时,对未来数据源进行更改,所述未来数据源是下次更新数据的数据源;[0007]若延迟定时器未开启,则启动所述延迟定时器,所述延迟定时器用于记录所述用户界面的延迟刷新时间;[0008]当所述延迟定时器到时时,将所述未来数据源复制给当前数据源,所述当前数据源是当前显示数据的数据源;[0009]根据所述当前数据源执行数据刷新方法,刷新所述用户界面;[0010]在刷新完成后,关闭所述延迟定时器。[0011]可选的,所述将所述未来数据源复制给当前数据源之前,所述方法还包括:[0012]判断所述用户界面是否正在显示;[0013]若所述用户界面正在显示,则将所述未来数据源复制给所述当前数据源;[0014]若所述用户界面不是正在显示,则关闭所述延迟定时器。[0015]可选的,所述启动所述延迟定时器之前,所述方法还包括:[0016]判断所述用户界面是否正在显示;[0017]若所述用户界面正在显示,则启动所述延迟定时器;[0018]若所述用户界面不是正在显示,则不启动所述延迟定时器,等待下一次更新。[0019]可选的,所述当用户界面的数据被更新时,调用未来数据源方法,对未来数据源进行更改之前,所述方法还包括:[0020]初始化TableViewModle时,生成所述延迟定时器,以及创建所述未来数据源和当前数据源。[0021]可选的,所述当用户界面的数据被更新时,对未来数据源进行更改之后,还包括:[0022]将刷新计数器的值加I,所述刷新计数器用于记录延迟刷新的次数;[0023]所述在刷新完成后,关闭所述延迟定时器之后,还包括:[0024]将刷新计数器的值设为O。[0025]可选的,所述方法还包括:[0026]当用户主动打开所述用户界面时,判断所述刷新计数器的值是否为O;[0027]当所述刷新计数器的值不为O时,执行数据刷新方法,刷新所述用户界面;[0028]当所述刷新计数器的值为O时,保持所述用户界面状态不变。[0029]本发明第二方面提供一种用户界面的刷新装置,包括:[0030]更改模块,用于当用户界面的数据被更新时,对未来数据源进行更改,所述未来数据源是下次更新数据的数据源;[0031]定时模块,用于若延迟定时器未开启,则启动所述延迟定时器,所述延迟定时器用于记录所述用户界面的延迟刷新时间;[0032]复制模块,用于当所述延迟定时器到时时,将所述未来数据源复制给当前数据源,所述当前数据源是当前显示数据的数据源;[0033]刷新模块,用于根据所述当前数据源执行数据刷新方法,刷新所述用户界面;[0034]所述定时模块还用于在刷新完成后,关闭所述延迟定时器。[0035]可选的,所述装置还包括第一判断模块;[0036]所述第一判断模块用于在所述复制模块将所述未来数据源复制给当前数据源之前,判断所述用户界面是否正在显示;[0037]若所述用户界面正在显示,则所述复制模块将所述未来数据源复制给所述当前数据源;[0038]若所述用户界面不是正在显示,则所述定时模块关闭所述延迟定时器。[0039]可选的,所述装置还包括第二判断模块;[0040]所述第二判断模块用于在所述定时模块启动所述延迟定时器之前,判断所述用户界面是否正在显示;[0041]若所述用户界面正在显示,则所述定时模块启动所述延迟定时器;[0042]若所述用户界面不是正在显示,则所述定时模块不启动所述延迟定时器,等待下一次更新。[0043]可选的,所述装置还包括初始化模块;[0044]所述初始化模块用于在初始化TableViewModle时,生成所述延迟定时器,以及创建所述未来数据源和当前数据源。[0045]可选的,所述装置还包括:[0046]计数模块,用于当所述更改模块对未来数据源进行更改之后,将刷新计数器的值加I,所述刷新计数器用于记录延迟刷新的次数;[0047]所述计数模块还用于,再所述定时模块关闭所述延迟定时器之后,将所述刷新计数器的值设为O。[0048]可选的,所述装置还包括:[0049]第三判断模块,用于当用户主动打开所述用户界面时,判断所述刷新计数器的值是否为O;[0050]所述刷新模块还用于,当所述第三判断模块判断所述刷新计数器的值不为O时,执行数据刷新方法,刷新所述用户界面;[0051]当所述刷新计数器的值为O时,保持所述用户界面状态不变。[0052]本发明提供的用户界面的刷新方法和装置,通过在TableViewModel中定义两个变量:未来数据源和当前数据源,当用户界面的数据被更新时,对未来数据源进行更改,并将刷新计数器的值加I,此时并没有真正刷新用户界面,而是当延迟定时器到时时,才将未来数据源的值复制给当前数据源,对用户界面进行一次刷新,通过延迟刷新避免短时间内频繁对用户界面刷新;设置刷新计数器,避免用户每次主动打开界面都对界面进行刷新,有效节约数据流量,并提高用户体验。【附图说明】[0053]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。[0054]图1为MVVM的结构示意图;[0055]图2为UITableView刷新机制流程图;[0056]图3为本发明实施例一提供的用户界面的刷新方法的流程图;[0057]图4为本发明实施例二提供的用户界面的刷新方法的流程图;[0058]图5为本发明实施例三提供的未来数据源和当前数据源之间的数据复制方法。[0059]图6为本发明实施例四提供的一种用户界面的刷新装置的结构示意图。[0060]图7为本发明实施例五提供的一种用户界面的刷新装置的结构示意图。【具体实施方式】[0061]本发明的方法适用于MVVM模式的UITableView,MVVM即模型-视图-视图模型(Modle-View-ViewModle),UI即用户界面(UserInterface,简称UI)。图1为MVVM的结构不意图,如图1所不,MVVM由三部分组成:Modle、View和ViewModIe,View即UI,ViewModIe是View的抽象,负责View与ModeI之间信息转换,将View的Command传送到Modle,Model即数据访问层。[0062]本发明主要是对ViewModle进行了改进,以下实施例的方法也由ViewModle执行,为了区别现有的ViewModle,本发明将改进后的ViewModle称为TableViewModel,以下将详细介绍TabIeViewModeI的工作原理,以及TabIeViewModeI中用到的类:[0063]I.I类TableViewSect1nData[0064]核心属性:[0065]NSArray^rowDatas;[0066]idheadData;[0067]idfootData;[0068]核心方法:[0069](TabIeViewSect1nMutabIeData^);[0070]其中,属性rowDatas是数据类型id的一个数组,它的含义是一个sect1n中所有row中的数据。一个UI包括多个sect1n,每个sect1n包括多个row[OO71]属性headData表示一个sect1n的headView所需要展示的数据,如果属性headData为空,贝Ij说明不需要展示headView。[0072]属性footData表示一个sect1n的footView所需要展示的数据,如果footView为空,则说明不需要展示fOOtView0[0073]方法mutableCopy的作用是返回一个数据和本身完全一致的TabIeViewSect1nMutabIeData,以提供外部进行修改。[0074]1.2类TableViewSect1nMutableData[0075]核心属性:[0076]NSMutableArray^rowDatas;[0077]idheadData;[0078]idfootData;[0079]核心方法:[0080](TableViewSect1nData*)copy;[0081]其中,属性rowDatas是数据类型id的一个可变数组,它的含义是一个sect1n中所有row中的数据。[0082]属性headData同TableViewSect1nData含义一致,属性footData同TabIeViewSect1nData含义一致D[0083]方法mutableCopy的作用是返回一个数据和本身完全一致的TableViewSect1nData,以提供UITabIeView进行展不数据。[0084]1.3类TableViewDataSource[0085]核心属性:[0086]NSArray^sect1nDatas;[0087]idheadData;[0088]idfootData;[0089]核心接口:[0090]-(TabIeViewSect1nData*)sect1nDatalnSect1n:(NSInteger)sect1n;[0091]-(TabIeViewMutabIeDataSource^)mutabIeCopy;[0092]其中,属性sect1nDatas是TableViewSect1nData对象的一个数组,它的含义是一个UITabIeView中所有sect1n的数据D[0093]属性headData表示一个UITabIeView的headView所需要展示的数据,如果headData为空,贝丨】说明不需要headView。[0094]属性footData表示一个UITabIeView的footView所需要展示的数据,如果footView为空,贝Ij说明不需要展示footView。[0095]方法mutableCopy的作用是返回一个数据和本身完全一致的TableViewMutabIeDataSource,以提供外部进行修改。[0096]1.4类TableViewMutableDataSource[0097]核心成员变量:[0098]NSMutabIeArray^sect1nDatas;[0099]idheadData;[0100]idfootData;[0101]核心接口:[0102]-(TabIeViewSect1nMutabIeData*)sect1nDatalnSect1n:(NSInteger)[0103]sect1n;[0104]-(TableViewDataSource*)copy;[0105]其中,属性sect1nDatas这是TabIeViewSect1nData对象的一个可变数组,它的含义是一个UITableView中所有sect1n的数据D[0106]属性headData同TableViewDataSource—致,属性footData同TabIeViewDataSource一致ο[0107]方法mutableCopy的作用是返回一个数据和本身完全一致的TableViewDataSource,以提供UITableView进行展不。[0108]1.5类TabIeViewModeI[0109]核心成员变量:[0110]TableViewDataSource^currentDataSource;[0111]TableViewMutableDataSource*—nextDataSource;[0112]核心属性:[0113]UITabIeView^tabIeView;[0114]核心接口:[0115](TableViewMutableDataSource*)nextDataSource;[0116](TableViewDataSource*)currentDataSource;[0117](void)re1adData;[0118]1.5.1核心成员变量释义[0119]8、-(3111'代1^03七330111'06表不1]11313161\^6¥当前的(13七330111'06(数据源),这里的dataSource并不是UITableView中的dataSource,UITabIeView的dataSource的含义是提供数据源的代理,而这里的数据源就是—currentDataSource,为了区分两者,把UITableView的属性dataSource称为dataSource代理。[0120]b、-nextDataSource表不UITabIeView未来的dataSource,其中,未来指的是下次reloadData时,nextDataSource将会成为UITableView的dataSource,所以任何nextDataSource的变更,将在下次reloadData时得以展现,nextDataSource在TableViewModel初始化的时候会被创建并被初始化。[0121]1.5.2核心属性释义:[0122]a、tabIeView由外部传入,作用是在re1adData方法内部调用tabIeView的reIoadData方法。[0123]1.5.3核心接口释义:[0124]aN-(TableViewMutableDataSource*)nextDataSource;[0125]外界通过调用此接口来获取UITableView的未来数据并对其进行更改。[0126]bN-(TableViewDataSource*)currentDataSource;[0127]外界通过调用此接口来获取UlTableView当前的数据源,获取到的数据需要立即被展示的。注:该接口返回的实际上是成员变量_nextDataSource的不可变副本,以防止在多线程T_currentDataSource突变造成crash。[0128]cN-(void)reloadData;[ΟΙ29]该接口与UITableView的reloadData功能一致,都是在数据源变更之后用于刷新界面,实际上该方法本质上也是调用UITabIeView的re1adData方法。它们最大区别在于,reloadData方法在真正刷新界面之前,会进行数据源的切换:[0130]_currentDataSource=[_nextDataSourcecopy];[0131]1.6TableViewModel(viewModeI)与UITabIeVIewControIler(viewControIler)、UITableView(tableView)结合使用的具体步骤可参照图2,图2为UITableView刷新机制流程图,如图2所示,UITableView刷新机制包括以下步骤:[0132]步骤101、在viewControlIer的viewDidLoad方法中生成viewMode1、tableView。[0133]步骤102、将viewControIIer设为tabIeView的dataSource代理与delegate代理,并将ViewModeI的tabIeView属性指向tabIeView。[0134]步骤103、viewContro11er加载数据,加载结束之后,调用viewModeI的-(TabIeViewMutabIeDataSource*)nextDataSource方法获取数据源并更新数据源。[0135]步骤104、调用viewModel的reloadData方法开始更新UITabIeView界面。[0136]步骤105、执行UITabIeView的delegate代理方法和dataSource代理方法,通过ViewModle的-(TabIeViewDataSource*)currentDataSource方法获取数据源。[0137]步骤106、界面刷新完毕。[0138]结合上述描述的TableViewModel的工作原理,以及UITableView刷新机制,本发明实施例一提供一种用户界面的刷新方法,图3为本发明实施例一提供的用户界面的刷新方法的流程图,如图3所示,本实施例提供的方法包括以下步骤:[0139]步骤201、当用户界面的数据被更新时,对未来数据源进行更改,未来数据源是下次更新数据的数据源。[0140]这里的未来数据源,即上述的TableViewModle的nextDataSource。例如,获取到新数据,需要在用户界面的第一行插入一行时,调用TableViewModle的nextDataSource方法,获取列表数据源TableViewMutableDataSource,即获取用户界面中所有sect1n的数据源,并再次获取sect1n为O的TableViewSect1nMutableData。然后在TabIeViewSect1nMutabIeData的属性rowData中插入一条数据。[0141]步骤202、若延迟定时器未开启,则启动延迟定时器,延迟定时器用于记录用户界面的延迟刷新时间。[0142]在未来数据源进行更改后,判断延迟定时器是否开启,延迟定时器在TableViewModle初始化时生成,延迟定时器的延迟刷新时间可以根据实际需要设置,例如为I秒。如果延迟定时器未开启,则启动延迟定时器,如果延迟定时器已经开启,那么结束,不执行任何操作,等待延迟定时器到时。[0143]步骤203、当延迟定时器到时时,将未来数据源复制给当前数据源,当前数据源是当前显示数据的数据源。[0144]本实施例的方法,通过在TableViewModle内部定义两个变量未来数据源和当前数据源,未来数据源变量,当前数据源为不可变量,当有数据更新时,会立即更新未来数据源,当前数据源并不会立即更新,只有当延迟定时器到时时,才会将未来数据源的值复制给当前数据源,当前数据源的值一旦被改变,会立即在用户界面上展示出来。通过设置延迟定时器,避免在短时间内对用户界面重复刷新多次,在延迟定时器到时前,每次数据更新时并不是真正更新数据,只有当延迟定时器到时时,才会触发真正的更新操作。在延迟刷新时间内可能进行了多次更新,该多次更新被延迟后统一进行一次刷新。复制过程可以表示为-currentDataSource=[-nextDataSourcecopy]ο[0145]另外,本发明的方法还可以解决因延时刷新而导致UITableView已展示的数据与其数据源不一致而导致的一系列问题。[0146]步骤204、根据当前数据源执行数据刷新方法,刷新用户界面。[0?47]在将未来数据源复制给当前数据源后,TableView执行数据刷新方法re1adData,刷新用户界面。[0148]步骤205、关闭延迟定时器。[0149]当后续有数据更新时,重复执行上述步骤。[0150]本实施例的方法,通过在TableViewModel中定义两个变量:未来数据源和当前数据源,当用户界面的数据被更新时,对未来数据源进行更改,此时并没有真正刷新用户界面,而是当延迟定时器到时时,才将未来数据源的值复制给当前数据源,进行数据刷新。通过延迟刷新避免短时间内频繁对用户界面刷新。[0151]在实施例一的基础上,在本发明的其他实施例中,步骤201之后还可以包括如下步骤:将刷新计数器的值加I,刷新计数器用于记录延迟刷新的次数,并在步骤205之后,即在刷新完成,关闭延迟定时器之后,将刷新计数器的值设为O。其中,刷新计数器的初始值为0,每需要更新一次数据时,刷新计数器的值就会加I,例如,当用户界面被更新3次时,刷新计数器的值为3,当用户界面被更新5次时,刷新计数器的值为5。这里只是自增刷新计数器,实际上并没有真正执行数据更新,数据更新还是在延迟定时器到时时,才进行数据更新。[0152]在上述实施例一和定义的TableViewModel的工作原理的基础上,图4为本发明实施例二提供的用户界面的刷新方法的流程图,如图4所示,本实施例提供的方法可以包括以下步骤:[0153]步骤301、获取到新数据,需要在第一行插入一行。[0154]步骤302、调用TableViewModeI的nextDataSource方法,获取列表数据源TabIeViewMuTabIeDataSource,并再次获取到sect1n为O的TabIeViewMuTabIeDataο[0155]步骤303、在TabIeViewSect1nMuTabIeData的属性rowData中插入一条数据。[0156]步骤304、调用TabIeViewModle的re1adData方法。[0157]步骤305、刷新计数器的值加I。[0158]步骤306、判断延迟定时器是否开启。[0159]如果延迟定时器未开启,则执行步骤307,如果延迟定时器开启,则执行步骤308。[0160]步骤307、开启延迟定时器。[0161]步骤308、结束。[0162]步骤309、延迟定时器回调方法被触发。[0163]步骤310、开始执行回调方法。[0164]/^§031K-currentDataSource=[-nextDataSourcecopy]ο[0165]步骤312、TableView执行reloadData。[0166]步骤313、刷新计数器的值设为O。[0167]步骤314、关闭延迟定时器。[0168]步骤315、定时器回调方法结束。[0169]在上述实施例一和实施例二的基础上,本发明实施例三提供一种数据复制方法,图5为本发明实施例三提供的未来数据源和当前数据源之间的数据复制方法,本实施例的方法是基于上述TableViewModel实现的,如图5所示,本实施例提供的方法可以包括以下步骤:[0170]步骤401、开始执行TabIeViewSect1nMuTabIeData的copy方法。[0171]步骤402、新建TabIeViewDataSource、NSMuTabIeArrayο[0172]其中,TableViewDataSource是newData,NSMuTableArray是newArray。[0173]步骤403、newData.headData=self.headData,newData.footData=self.footDaTa。[0174]步骤404、遍历sect1nDatas获得sect1nData。[ΟΙ75]步骤405、判断遍历是否结束。[0176]如果遍历结束,则执行步骤406,如果遍历没有结束,执行步骤409。[0177]步骤406、NSArrayarray=[newArraycopy]ο[0178]步骤407、newData.sect1nData=array0[0179]步骤408、返回newDatao[0180]步骤409、TableViewSect1nDatanewSect1nData=[sect1nDatacopy]0[0?81]步骤409的具体实现方式可以为:先新建newSect1nData,然后执行[0182]newSect1nData.headData=self.headData,[0183]newSect1nData.footData=self.footData,[0184]newSect1nData.rowData=[self.rowDatacopy],最后执txnewArrayaddObject:newSect1nData。[0185]在上述实施例一的基础上,在延迟定时器到时之后,将未来数据源复制给当前数据源之前,还可以判断用户界面是否正在显示,若用户界面正在显示,则将未来数据源复制给当前数据源。若用户界面不是正在显示,则关闭延迟定时器。如果用户界面正在显示,那么说明用户当前正在浏览用户界面,需要将更新数据立即展示出来,以便于用户能够及时看到更新数据,如果用户界面当前没有显示,那么更新数据不要立即展示出来,因为即使展示出来了,用户也不会去看,更新的意义不大。如果用户界面不是正在显示,不会对用户界面进行更新,后续当用户主动打开用户界面时,判断刷新计数器的值是否为0,当刷新计数器的值不为O时,执行数据刷新方法,刷新用户界面,以保证用户主动打开用户界面时,可以立刻获取更新的数据。当刷新计数器的值为O时,说明没有数据被更新,此时并不需要对用户界面进行刷新,保持用户界面的状态不变即可,从而能够避免用户每次主动打开界面都对界面进行刷新,有效节约数据流量,并提高用户体验。为了实现上述用户界面不在当前显示不刷新用户界面,需要对TableViewModel添加拓展属性与方法。[0186]属性:[0187]BOOLisShow;[0188]方法[0189]-(void)viewffillAppear;[0190]-(void)viewffillDisappear;[0191]其中,属性isShow表示UITabIeView是否正在显示,方法viewWiIIAppear当UITabIeView即将出现时调用,方法viewWiIIDisappear当UITabIeView即将消失时调用。[ΟΙ92]相应的,在实施例二中步骤311之前,判断isShow==true是否正确,如果isShow==true正确,那么执行步骤311,如果isShow==true不正确,那么执行步骤314。[0193]进一步,在实施例一的基础上,在启动延迟定时器之前,还可以进一步判断用户界面是否正在显示,若用户界面正在显示,则启动延迟定时器,若用户界面不是正在显示,则不启动延迟定时器,等待下一次更新。用户界面当前没有显示,说明用户已经离开了被更新的用户界面,此时立即更新没有什么意义,所以没必要开启定时器,触发后续的更新操作。[0194]图6为本发明实施例四提供的一种用户界面的刷新装置的结构示意图,如图6所示,本实施例提供的装置包括:更改模块11、定时模块12、复制模块13和刷新模块14。[0195]更改模块11,用于当用户界面的数据被更新时,对未来数据源进行更改,所述未来数据源是下次更新数据的数据源;[0196]定时模块12,用于若延迟定时器未开启,则启动所述延迟定时器,所述延迟定时器用于记录所述用户界面的延迟刷新时间;[0197]复制模块13,用于当所述延迟定时器到时时,将所述未来数据源复制给当前数据源,所述当前数据源是当前显示数据的数据源;[0198]刷新模块14,用于根据所述当前数据源执行数据刷新方法,刷新所述用户界面;[0199]所述定时模块12还用于在刷新完成后,关闭所述延迟定时器。[0200]图7为本发明实施例五提供的一种用户界面的刷新装置的结构示意图,如图7所示,在图6所示装置的结构基础上,本实施例提供的装置还包括:第一判断模块15和第二判断丰旲块16。[0201]所述第一判断模块15用于在所述复制模块13将所述未来数据源复制给当前数据源之前,判断所述用户界面是否正在显示。若所述用户界面正在显示,则所述复制模块13将所述未来数据源复制给所述当前数据源。若所述用户界面不是正在显示,则所述定时模块12关闭所述延迟定时器。[0202]所述第二判断模块16用于在所述定时模块12启动所述延迟定时器之前,判断所述用户界面是否正在显示。若所述用户界面正在显示,则所述定时模块12启动所述延迟定时器。若所述用户界面不是正在显示,则所述定时模块12不启动所述延迟定时器,等待下一次更新。[0203]可选的,用户界面的刷新装置也可以只包括第一判断模块15或第二判断模块16。[0204]可选的,在图6和图7所示的用户界面的刷新装置的基础上,还包括初始化模块,所述初始化模块用于在初始化TableViewModle时,生成所述延迟定时器,以及创建所述未来数据源和当前数据源。[0205]图6和图7所示的用户界面的刷新装置,可用于执行上述实施例一至实施例三的方案,具体实现方式参照上述实施例的描述,这里不再赘述。[0206]需要说明的是,在本发明的其他实施例中,上述的用户界面的刷新装置还可以包括计数模块,计数模块用于当更改模块11对未来数据源进行更改之后,将刷新计数器的值加1,刷新计数器用于记录延迟刷新的次数,所述计数模块12还用于在所述定时模块12关闭所述延迟定时器之后,将所述刷新计数器的值设为O。可选的,该用户界面的刷新装置还可以包括第三判断模块,第三判断模块用于当用户主动打开所述用户界面时,判断所述刷新计数器的值是否为O。所述刷新模块还用于,当所述第三判断模块判断所述刷新计数器的值不为O时,执行数据刷新方法,刷新所述用户界面,当所述刷新计数器的值为O时,保持所述用户界面状态不变。[0207]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。[0208]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。【主权项】1.一种用户界面的刷新方法,其特征在于,包括:当用户界面的数据被更新时,对未来数据源进行更改,所述未来数据源是下次更新数据的数据源;若延迟定时器未开启,则启动所述延迟定时器,所述延迟定时器用于记录所述用户界面的延迟刷新时间;当所述延迟定时器到时时,将所述未来数据源复制给当前数据源,所述当前数据源是当前显示数据的数据源;根据所述当前数据源执行数据刷新方法,刷新所述用户界面;在刷新完成后,关闭所述延迟定时器。2.根据权利要求1所述的方法,其特征在于,所述将所述未来数据源复制给当前数据源之前,所述方法还包括:判断所述用户界面是否正在显示;若所述用户界面正在显示,则将所述未来数据源复制给所述当前数据源;若所述用户界面不是正在显示,则关闭所述延迟定时器。3.根据权利要求1所述的方法,其特征在于,所述启动所述延迟定时器之前还包括:判断所述用户界面是否正在显示;若所述用户界面正在显示,则启动所述延迟定时器;若所述用户界面不是正在显示,则不启动所述延迟定时器,等待下一次更新。4.根据权利要求1所述的方法,其特征在于,所述当用户界面的数据被更新时,调用未来数据源方法,对未来数据源进行更改之前,还包括:初始化TableViewModle时,生成所述延迟定时器,以及创建所述未来数据源和当前数据源。5.根据权利要求1-4任一项所述的方法,其特征在于,所述当用户界面的数据被更新时,对未来数据源进行更改之后,还包括:将刷新计数器的值加I,所述刷新计数器用于记录延迟刷新的次数;所述在刷新完成后,关闭所述延迟定时器之后,还包括:将刷新计数器的值设为O。6.根据权利要求5所述的方法,其特征在于,还包括:当用户主动打开所述用户界面时,判断所述刷新计数器的值是否为O;当所述刷新计数器的值不为O时,执行数据刷新方法,刷新所述用户界面;当所述刷新计数器的值为O时,保持所述用户界面状态不变。7.一种用户界面的刷新装置,其特征在于,包括:更改模块,用于当用户界面的数据被更新时,对未来数据源进行更改,所述未来数据源是下次更新数据的数据源;定时模块,用于若延迟定时器未开启,则启动所述延迟定时器,所述延迟定时器用于记录所述用户界面的延迟刷新时间;复制模块,用于当所述延迟定时器到时时,将所述未来数据源复制给当前数据源,所述当前数据源是当前显示数据的数据源;刷新模块,用于根据所述当前数据源执行数据刷新方法,刷新所述用户界面;所述定时模块还用于在刷新完成后,关闭所述延迟定时器。8.根据权利要求7所述的装置,其特征在于,还包括第一判断模块;所述第一判断模块用于在所述复制模块将所述未来数据源复制给当前数据源之前,判断所述用户界面是否正在显示;若所述用户界面正在显示,则所述复制模块将所述未来数据源复制给所述当前数据源;若所述用户界面不是正在显示,则所述定时模块关闭所述延迟定时器。9.根据权利要求7所述的装置,其特征在于,还包括第二判断模块;所述第二判断模块用于在所述定时模块启动所述延迟定时器之前,判断所述用户界面是否正在显示;若所述用户界面正在显示,则所述定时模块启动所述延迟定时器;若所述用户界面不是正在显示,则所述定时模块不启动所述延迟定时器,等待下一次更新。10.根据权利要求7所述的装置,其特征在于,还包括初始化模块;所述初始化模块用于在初始化TableViewModle时,生成所述延迟定时器,以及创建所述未来数据源和当前数据源。11.根据权利要求7-10任一项所述的装置,其特征在于,还包括:计数模块,用于当所述更改模块对未来数据源进行更改之后,将刷新计数器的值加I,所述刷新计数器用于记录延迟刷新的次数;所述计数模块还用于,在所述定时模块关闭所述延迟定时器之后,将所述刷新计数器的值设为O。12.根据权利要求11所述的装置,其特征在于,还包括:第三判断模块,用于当用户主动打开所述用户界面时,判断所述刷新计数器的值是否为O;所述刷新模块还用于,当所述第三判断模块判断所述刷新计数器的值不为O时,执行数据刷新方法,刷新所述用户界面;当所述刷新计数器的值为O时,保持所述用户界面状态不变。【文档编号】G06F9/445GK105955777SQ201610284654【公开日】2016年9月21日【申请日】2016年5月3日【发明人】徐慧斌【申请人】网易(杭州)网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1