亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用戶界面的刷新方法和裝置的制造方法

文檔序號:10593887閱讀:332來源:國知局
用戶界面的刷新方法和裝置的制造方法【專利摘要】本發(fā)明提供一種用戶界面的刷新方法和裝置,通過在TableViewModel中定義兩個變量:未來數(shù)據(jù)源和當(dāng)前數(shù)據(jù)源,當(dāng)用戶界面的數(shù)據(jù)被更新時,對未來數(shù)據(jù)源進(jìn)行更改,此時并沒有真正刷新用戶界面,而是當(dāng)延遲定時器到時時,才將未來數(shù)據(jù)源的值復(fù)制給當(dāng)前數(shù)據(jù)源,對用戶界面進(jìn)行一次刷新,通過延遲刷新避免短時間內(nèi)頻繁對用戶界面刷新?!緦@f明】用戶界面的刷新方法和裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù),尤其涉及一種用戶界面的刷新方法和裝置?!?br>背景技術(shù)
】[0002]即時通訊(InstantMessagin,簡稱IM)是一種可以讓使用者在網(wǎng)絡(luò)上建立某種私人聊天室(chatroom)的實時通訊服務(wù)。眾所周知,IM類的應(yīng)用數(shù)據(jù)變更頻繁、數(shù)據(jù)量大,如果采用實時刷新的策略,難免會造成用戶界面卡頓、性能低下的后果,甚至有些時候,應(yīng)用直接長時間卡住,達(dá)到不可用的狀態(tài)。而應(yīng)用的界面流暢度,是影響用戶體驗最直接、也是最重要的一項指標(biāo)。[0003]大部分的即時通訊服務(wù)提供了狀態(tài)信息的特性——顯示聯(lián)絡(luò)人名單,聯(lián)絡(luò)人是否在線及能否與聯(lián)絡(luò)人交談,UITableView是1S中使用最頻繁、也是最重要的控件之一,它為需要以list方式展示的數(shù)據(jù)提供了很好地展示方案,它的可重用機(jī)制極大的優(yōu)化了應(yīng)用性能。但是當(dāng)IM的用戶界面的數(shù)據(jù)源頻繁發(fā)生更改時,頻繁的刷新會使得用戶界面卡頓,性能降低?!?br/>發(fā)明內(nèi)容】[0004]本發(fā)明提供一種用戶界面的刷新方法和裝置,避免了短時間內(nèi)頻繁更新用戶界面。[0005]本發(fā)明第一方面提供一種用戶界面的刷新方法,包括:[0006]當(dāng)用戶界面的數(shù)據(jù)被更新時,對未來數(shù)據(jù)源進(jìn)行更改,所述未來數(shù)據(jù)源是下次更新數(shù)據(jù)的數(shù)據(jù)源;[0007]若延遲定時器未開啟,則啟動所述延遲定時器,所述延遲定時器用于記錄所述用戶界面的延遲刷新時間;[0008]當(dāng)所述延遲定時器到時時,將所述未來數(shù)據(jù)源復(fù)制給當(dāng)前數(shù)據(jù)源,所述當(dāng)前數(shù)據(jù)源是當(dāng)前顯示數(shù)據(jù)的數(shù)據(jù)源;[0009]根據(jù)所述當(dāng)前數(shù)據(jù)源執(zhí)行數(shù)據(jù)刷新方法,刷新所述用戶界面;[0010]在刷新完成后,關(guān)閉所述延遲定時器。[0011]可選的,所述將所述未來數(shù)據(jù)源復(fù)制給當(dāng)前數(shù)據(jù)源之前,所述方法還包括:[0012]判斷所述用戶界面是否正在顯示;[0013]若所述用戶界面正在顯示,則將所述未來數(shù)據(jù)源復(fù)制給所述當(dāng)前數(shù)據(jù)源;[0014]若所述用戶界面不是正在顯示,則關(guān)閉所述延遲定時器。[0015]可選的,所述啟動所述延遲定時器之前,所述方法還包括:[0016]判斷所述用戶界面是否正在顯示;[0017]若所述用戶界面正在顯示,則啟動所述延遲定時器;[0018]若所述用戶界面不是正在顯示,則不啟動所述延遲定時器,等待下一次更新。[0019]可選的,所述當(dāng)用戶界面的數(shù)據(jù)被更新時,調(diào)用未來數(shù)據(jù)源方法,對未來數(shù)據(jù)源進(jìn)行更改之前,所述方法還包括:[0020]初始化TableViewModle時,生成所述延遲定時器,以及創(chuàng)建所述未來數(shù)據(jù)源和當(dāng)前數(shù)據(jù)源。[0021]可選的,所述當(dāng)用戶界面的數(shù)據(jù)被更新時,對未來數(shù)據(jù)源進(jìn)行更改之后,還包括:[0022]將刷新計數(shù)器的值加I,所述刷新計數(shù)器用于記錄延遲刷新的次數(shù);[0023]所述在刷新完成后,關(guān)閉所述延遲定時器之后,還包括:[0024]將刷新計數(shù)器的值設(shè)為O。[0025]可選的,所述方法還包括:[0026]當(dāng)用戶主動打開所述用戶界面時,判斷所述刷新計數(shù)器的值是否為O;[0027]當(dāng)所述刷新計數(shù)器的值不為O時,執(zhí)行數(shù)據(jù)刷新方法,刷新所述用戶界面;[0028]當(dāng)所述刷新計數(shù)器的值為O時,保持所述用戶界面狀態(tài)不變。[0029]本發(fā)明第二方面提供一種用戶界面的刷新裝置,包括:[0030]更改模塊,用于當(dāng)用戶界面的數(shù)據(jù)被更新時,對未來數(shù)據(jù)源進(jìn)行更改,所述未來數(shù)據(jù)源是下次更新數(shù)據(jù)的數(shù)據(jù)源;[0031]定時模塊,用于若延遲定時器未開啟,則啟動所述延遲定時器,所述延遲定時器用于記錄所述用戶界面的延遲刷新時間;[0032]復(fù)制模塊,用于當(dāng)所述延遲定時器到時時,將所述未來數(shù)據(jù)源復(fù)制給當(dāng)前數(shù)據(jù)源,所述當(dāng)前數(shù)據(jù)源是當(dāng)前顯示數(shù)據(jù)的數(shù)據(jù)源;[0033]刷新模塊,用于根據(jù)所述當(dāng)前數(shù)據(jù)源執(zhí)行數(shù)據(jù)刷新方法,刷新所述用戶界面;[0034]所述定時模塊還用于在刷新完成后,關(guān)閉所述延遲定時器。[0035]可選的,所述裝置還包括第一判斷模塊;[0036]所述第一判斷模塊用于在所述復(fù)制模塊將所述未來數(shù)據(jù)源復(fù)制給當(dāng)前數(shù)據(jù)源之前,判斷所述用戶界面是否正在顯示;[0037]若所述用戶界面正在顯示,則所述復(fù)制模塊將所述未來數(shù)據(jù)源復(fù)制給所述當(dāng)前數(shù)據(jù)源;[0038]若所述用戶界面不是正在顯示,則所述定時模塊關(guān)閉所述延遲定時器。[0039]可選的,所述裝置還包括第二判斷模塊;[0040]所述第二判斷模塊用于在所述定時模塊啟動所述延遲定時器之前,判斷所述用戶界面是否正在顯示;[0041]若所述用戶界面正在顯示,則所述定時模塊啟動所述延遲定時器;[0042]若所述用戶界面不是正在顯示,則所述定時模塊不啟動所述延遲定時器,等待下一次更新。[0043]可選的,所述裝置還包括初始化模塊;[0044]所述初始化模塊用于在初始化TableViewModle時,生成所述延遲定時器,以及創(chuàng)建所述未來數(shù)據(jù)源和當(dāng)前數(shù)據(jù)源。[0045]可選的,所述裝置還包括:[0046]計數(shù)模塊,用于當(dāng)所述更改模塊對未來數(shù)據(jù)源進(jìn)行更改之后,將刷新計數(shù)器的值加I,所述刷新計數(shù)器用于記錄延遲刷新的次數(shù);[0047]所述計數(shù)模塊還用于,再所述定時模塊關(guān)閉所述延遲定時器之后,將所述刷新計數(shù)器的值設(shè)為O。[0048]可選的,所述裝置還包括:[0049]第三判斷模塊,用于當(dāng)用戶主動打開所述用戶界面時,判斷所述刷新計數(shù)器的值是否為O;[0050]所述刷新模塊還用于,當(dāng)所述第三判斷模塊判斷所述刷新計數(shù)器的值不為O時,執(zhí)行數(shù)據(jù)刷新方法,刷新所述用戶界面;[0051]當(dāng)所述刷新計數(shù)器的值為O時,保持所述用戶界面狀態(tài)不變。[0052]本發(fā)明提供的用戶界面的刷新方法和裝置,通過在TableViewModel中定義兩個變量:未來數(shù)據(jù)源和當(dāng)前數(shù)據(jù)源,當(dāng)用戶界面的數(shù)據(jù)被更新時,對未來數(shù)據(jù)源進(jìn)行更改,并將刷新計數(shù)器的值加I,此時并沒有真正刷新用戶界面,而是當(dāng)延遲定時器到時時,才將未來數(shù)據(jù)源的值復(fù)制給當(dāng)前數(shù)據(jù)源,對用戶界面進(jìn)行一次刷新,通過延遲刷新避免短時間內(nèi)頻繁對用戶界面刷新;設(shè)置刷新計數(shù)器,避免用戶每次主動打開界面都對界面進(jìn)行刷新,有效節(jié)約數(shù)據(jù)流量,并提高用戶體驗。【附圖說明】[0053]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。[0054]圖1為MVVM的結(jié)構(gòu)示意圖;[0055]圖2為UITableView刷新機(jī)制流程圖;[0056]圖3為本發(fā)明實施例一提供的用戶界面的刷新方法的流程圖;[0057]圖4為本發(fā)明實施例二提供的用戶界面的刷新方法的流程圖;[0058]圖5為本發(fā)明實施例三提供的未來數(shù)據(jù)源和當(dāng)前數(shù)據(jù)源之間的數(shù)據(jù)復(fù)制方法。[0059]圖6為本發(fā)明實施例四提供的一種用戶界面的刷新裝置的結(jié)構(gòu)示意圖。[0060]圖7為本發(fā)明實施例五提供的一種用戶界面的刷新裝置的結(jié)構(gòu)示意圖。【具體實施方式】[0061]本發(fā)明的方法適用于MVVM模式的UITableView,MVVM即模型-視圖-視圖模型(Modle-View-ViewModle),UI即用戶界面(UserInterface,簡稱UI)。圖1為MVVM的結(jié)構(gòu)不意圖,如圖1所不,MVVM由三部分組成:Modle、View和ViewModIe,View即UI,ViewModIe是View的抽象,負(fù)責(zé)View與ModeI之間信息轉(zhuǎn)換,將View的Command傳送到Modle,Model即數(shù)據(jù)訪問層。[0062]本發(fā)明主要是對ViewModle進(jìn)行了改進(jìn),以下實施例的方法也由ViewModle執(zhí)行,為了區(qū)別現(xiàn)有的ViewModle,本發(fā)明將改進(jìn)后的ViewModle稱為TableViewModel,以下將詳細(xì)介紹TabIeViewModeI的工作原理,以及TabIeViewModeI中用到的類:[0063]I.I類TableViewSect1nData[0064]核心屬性:[0065]NSArray^rowDatas;[0066]idheadData;[0067]idfootData;[0068]核心方法:[0069](TabIeViewSect1nMutabIeData^);[0070]其中,屬性rowDatas是數(shù)據(jù)類型id的一個數(shù)組,它的含義是一個sect1n中所有row中的數(shù)據(jù)。一個UI包括多個sect1n,每個sect1n包括多個row[OO71]屬性headData表示一個sect1n的headView所需要展示的數(shù)據(jù),如果屬性headData為空,貝Ij說明不需要展示headView。[0072]屬性footData表示一個sect1n的footView所需要展示的數(shù)據(jù),如果footView為空,則說明不需要展示fOOtView0[0073]方法mutableCopy的作用是返回一個數(shù)據(jù)和本身完全一致的TabIeViewSect1nMutabIeData,以提供外部進(jìn)行修改。[0074]1.2類TableViewSect1nMutableData[0075]核心屬性:[0076]NSMutableArray^rowDatas;[0077]idheadData;[0078]idfootData;[0079]核心方法:[0080](TableViewSect1nData*)copy;[0081]其中,屬性rowDatas是數(shù)據(jù)類型id的一個可變數(shù)組,它的含義是一個sect1n中所有row中的數(shù)據(jù)。[0082]屬性headData同TableViewSect1nData含義一致,屬性footData同TabIeViewSect1nData含義一致D[0083]方法mutableCopy的作用是返回一個數(shù)據(jù)和本身完全一致的TableViewSect1nData,以提供UITabIeView進(jìn)行展不數(shù)據(jù)。[0084]1.3類TableViewDataSource[0085]核心屬性:[0086]NSArray^sect1nDatas;[0087]idheadData;[0088]idfootData;[0089]核心接口:[0090]-(TabIeViewSect1nData*)sect1nDatalnSect1n:(NSInteger)sect1n;[0091]-(TabIeViewMutabIeDataSource^)mutabIeCopy;[0092]其中,屬性sect1nDatas是TableViewSect1nData對象的一個數(shù)組,它的含義是一個UITabIeView中所有sect1n的數(shù)據(jù)D[0093]屬性headData表示一個UITabIeView的headView所需要展示的數(shù)據(jù),如果headData為空,貝丨】說明不需要headView。[0094]屬性footData表示一個UITabIeView的footView所需要展示的數(shù)據(jù),如果footView為空,貝Ij說明不需要展示footView。[0095]方法mutableCopy的作用是返回一個數(shù)據(jù)和本身完全一致的TableViewMutabIeDataSource,以提供外部進(jìn)行修改。[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對象的一個可變數(shù)組,它的含義是一個UITableView中所有sect1n的數(shù)據(jù)D[0106]屬性headData同TableViewDataSource—致,屬性footData同TabIeViewDataSource一致ο[0107]方法mutableCopy的作用是返回一個數(shù)據(jù)和本身完全一致的TableViewDataSource,以提供UITableView進(jìn)行展不。[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¥當(dāng)前的(13七330111'06(數(shù)據(jù)源),這里的dataSource并不是UITableView中的dataSource,UITabIeView的dataSource的含義是提供數(shù)據(jù)源的代理,而這里的數(shù)據(jù)源就是—currentDataSource,為了區(qū)分兩者,把UITableView的屬性dataSource稱為dataSource代理。[0120]b、-nextDataSource表不UITabIeView未來的dataSource,其中,未來指的是下次reloadData時,nextDataSource將會成為UITableView的dataSource,所以任何nextDataSource的變更,將在下次reloadData時得以展現(xiàn),nextDataSource在TableViewModel初始化的時候會被創(chuàng)建并被初始化。[0121]1.5.2核心屬性釋義:[0122]a、tabIeView由外部傳入,作用是在re1adData方法內(nèi)部調(diào)用tabIeView的reIoadData方法。[0123]1.5.3核心接口釋義:[0124]aN-(TableViewMutableDataSource*)nextDataSource;[0125]外界通過調(diào)用此接口來獲取UITableView的未來數(shù)據(jù)并對其進(jìn)行更改。[0126]bN-(TableViewDataSource*)currentDataSource;[0127]外界通過調(diào)用此接口來獲取UlTableView當(dāng)前的數(shù)據(jù)源,獲取到的數(shù)據(jù)需要立即被展示的。注:該接口返回的實際上是成員變量_nextDataSource的不可變副本,以防止在多線程T_currentDataSource突變造成crash。[0128]cN-(void)reloadData;[ΟΙ29]該接口與UITableView的reloadData功能一致,都是在數(shù)據(jù)源變更之后用于刷新界面,實際上該方法本質(zhì)上也是調(diào)用UITabIeView的re1adData方法。它們最大區(qū)別在于,reloadData方法在真正刷新界面之前,會進(jìn)行數(shù)據(jù)源的切換:[0130]_currentDataSource=[_nextDataSourcecopy];[0131]1.6TableViewModel(viewModeI)與UITabIeVIewControIler(viewControIler)、UITableView(tableView)結(jié)合使用的具體步驟可參照圖2,圖2為UITableView刷新機(jī)制流程圖,如圖2所示,UITableView刷新機(jī)制包括以下步驟:[0132]步驟101、在viewControlIer的viewDidLoad方法中生成viewMode1、tableView。[0133]步驟102、將viewControIIer設(shè)為tabIeView的dataSource代理與delegate代理,并將ViewModeI的tabIeView屬性指向tabIeView。[0134]步驟103、viewContro11er加載數(shù)據(jù),加載結(jié)束之后,調(diào)用viewModeI的-(TabIeViewMutabIeDataSource*)nextDataSource方法獲取數(shù)據(jù)源并更新數(shù)據(jù)源。[0135]步驟104、調(diào)用viewModel的reloadData方法開始更新UITabIeView界面。[0136]步驟105、執(zhí)行UITabIeView的delegate代理方法和dataSource代理方法,通過ViewModle的-(TabIeViewDataSource*)currentDataSource方法獲取數(shù)據(jù)源。[0137]步驟106、界面刷新完畢。[0138]結(jié)合上述描述的TableViewModel的工作原理,以及UITableView刷新機(jī)制,本發(fā)明實施例一提供一種用戶界面的刷新方法,圖3為本發(fā)明實施例一提供的用戶界面的刷新方法的流程圖,如圖3所示,本實施例提供的方法包括以下步驟:[0139]步驟201、當(dāng)用戶界面的數(shù)據(jù)被更新時,對未來數(shù)據(jù)源進(jìn)行更改,未來數(shù)據(jù)源是下次更新數(shù)據(jù)的數(shù)據(jù)源。[0140]這里的未來數(shù)據(jù)源,即上述的TableViewModle的nextDataSource。例如,獲取到新數(shù)據(jù),需要在用戶界面的第一行插入一行時,調(diào)用TableViewModle的nextDataSource方法,獲取列表數(shù)據(jù)源TableViewMutableDataSource,即獲取用戶界面中所有sect1n的數(shù)據(jù)源,并再次獲取sect1n為O的TableViewSect1nMutableData。然后在TabIeViewSect1nMutabIeData的屬性rowData中插入一條數(shù)據(jù)。[0141]步驟202、若延遲定時器未開啟,則啟動延遲定時器,延遲定時器用于記錄用戶界面的延遲刷新時間。[0142]在未來數(shù)據(jù)源進(jìn)行更改后,判斷延遲定時器是否開啟,延遲定時器在TableViewModle初始化時生成,延遲定時器的延遲刷新時間可以根據(jù)實際需要設(shè)置,例如為I秒。如果延遲定時器未開啟,則啟動延遲定時器,如果延遲定時器已經(jīng)開啟,那么結(jié)束,不執(zhí)行任何操作,等待延遲定時器到時。[0143]步驟203、當(dāng)延遲定時器到時時,將未來數(shù)據(jù)源復(fù)制給當(dāng)前數(shù)據(jù)源,當(dāng)前數(shù)據(jù)源是當(dāng)前顯示數(shù)據(jù)的數(shù)據(jù)源。[0144]本實施例的方法,通過在TableViewModle內(nèi)部定義兩個變量未來數(shù)據(jù)源和當(dāng)前數(shù)據(jù)源,未來數(shù)據(jù)源變量,當(dāng)前數(shù)據(jù)源為不可變量,當(dāng)有數(shù)據(jù)更新時,會立即更新未來數(shù)據(jù)源,當(dāng)前數(shù)據(jù)源并不會立即更新,只有當(dāng)延遲定時器到時時,才會將未來數(shù)據(jù)源的值復(fù)制給當(dāng)前數(shù)據(jù)源,當(dāng)前數(shù)據(jù)源的值一旦被改變,會立即在用戶界面上展示出來。通過設(shè)置延遲定時器,避免在短時間內(nèi)對用戶界面重復(fù)刷新多次,在延遲定時器到時前,每次數(shù)據(jù)更新時并不是真正更新數(shù)據(jù),只有當(dāng)延遲定時器到時時,才會觸發(fā)真正的更新操作。在延遲刷新時間內(nèi)可能進(jìn)行了多次更新,該多次更新被延遲后統(tǒng)一進(jìn)行一次刷新。復(fù)制過程可以表示為-currentDataSource=[-nextDataSourcecopy]ο[0145]另外,本發(fā)明的方法還可以解決因延時刷新而導(dǎo)致UITableView已展示的數(shù)據(jù)與其數(shù)據(jù)源不一致而導(dǎo)致的一系列問題。[0146]步驟204、根據(jù)當(dāng)前數(shù)據(jù)源執(zhí)行數(shù)據(jù)刷新方法,刷新用戶界面。[0?47]在將未來數(shù)據(jù)源復(fù)制給當(dāng)前數(shù)據(jù)源后,TableView執(zhí)行數(shù)據(jù)刷新方法re1adData,刷新用戶界面。[0148]步驟205、關(guān)閉延遲定時器。[0149]當(dāng)后續(xù)有數(shù)據(jù)更新時,重復(fù)執(zhí)行上述步驟。[0150]本實施例的方法,通過在TableViewModel中定義兩個變量:未來數(shù)據(jù)源和當(dāng)前數(shù)據(jù)源,當(dāng)用戶界面的數(shù)據(jù)被更新時,對未來數(shù)據(jù)源進(jìn)行更改,此時并沒有真正刷新用戶界面,而是當(dāng)延遲定時器到時時,才將未來數(shù)據(jù)源的值復(fù)制給當(dāng)前數(shù)據(jù)源,進(jìn)行數(shù)據(jù)刷新。通過延遲刷新避免短時間內(nèi)頻繁對用戶界面刷新。[0151]在實施例一的基礎(chǔ)上,在本發(fā)明的其他實施例中,步驟201之后還可以包括如下步驟:將刷新計數(shù)器的值加I,刷新計數(shù)器用于記錄延遲刷新的次數(shù),并在步驟205之后,即在刷新完成,關(guān)閉延遲定時器之后,將刷新計數(shù)器的值設(shè)為O。其中,刷新計數(shù)器的初始值為0,每需要更新一次數(shù)據(jù)時,刷新計數(shù)器的值就會加I,例如,當(dāng)用戶界面被更新3次時,刷新計數(shù)器的值為3,當(dāng)用戶界面被更新5次時,刷新計數(shù)器的值為5。這里只是自增刷新計數(shù)器,實際上并沒有真正執(zhí)行數(shù)據(jù)更新,數(shù)據(jù)更新還是在延遲定時器到時時,才進(jìn)行數(shù)據(jù)更新。[0152]在上述實施例一和定義的TableViewModel的工作原理的基礎(chǔ)上,圖4為本發(fā)明實施例二提供的用戶界面的刷新方法的流程圖,如圖4所示,本實施例提供的方法可以包括以下步驟:[0153]步驟301、獲取到新數(shù)據(jù),需要在第一行插入一行。[0154]步驟302、調(diào)用TableViewModeI的nextDataSource方法,獲取列表數(shù)據(jù)源TabIeViewMuTabIeDataSource,并再次獲取到sect1n為O的TabIeViewMuTabIeDataο[0155]步驟303、在TabIeViewSect1nMuTabIeData的屬性rowData中插入一條數(shù)據(jù)。[0156]步驟304、調(diào)用TabIeViewModle的re1adData方法。[0157]步驟305、刷新計數(shù)器的值加I。[0158]步驟306、判斷延遲定時器是否開啟。[0159]如果延遲定時器未開啟,則執(zhí)行步驟307,如果延遲定時器開啟,則執(zhí)行步驟308。[0160]步驟307、開啟延遲定時器。[0161]步驟308、結(jié)束。[0162]步驟309、延遲定時器回調(diào)方法被觸發(fā)。[0163]步驟310、開始執(zhí)行回調(diào)方法。[0164]/^§031K-currentDataSource=[-nextDataSourcecopy]ο[0165]步驟312、TableView執(zhí)行reloadData。[0166]步驟313、刷新計數(shù)器的值設(shè)為O。[0167]步驟314、關(guān)閉延遲定時器。[0168]步驟315、定時器回調(diào)方法結(jié)束。[0169]在上述實施例一和實施例二的基礎(chǔ)上,本發(fā)明實施例三提供一種數(shù)據(jù)復(fù)制方法,圖5為本發(fā)明實施例三提供的未來數(shù)據(jù)源和當(dāng)前數(shù)據(jù)源之間的數(shù)據(jù)復(fù)制方法,本實施例的方法是基于上述TableViewModel實現(xiàn)的,如圖5所示,本實施例提供的方法可以包括以下步驟:[0170]步驟401、開始執(zhí)行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、判斷遍歷是否結(jié)束。[0176]如果遍歷結(jié)束,則執(zhí)行步驟406,如果遍歷沒有結(jié)束,執(zhí)行步驟409。[0177]步驟406、NSArrayarray=[newArraycopy]ο[0178]步驟407、newData.sect1nData=array0[0179]步驟408、返回newDatao[0180]步驟409、TableViewSect1nDatanewSect1nData=[sect1nDatacopy]0[0?81]步驟409的具體實現(xiàn)方式可以為:先新建newSect1nData,然后執(zhí)行[0182]newSect1nData.headData=self.headData,[0183]newSect1nData.footData=self.footData,[0184]newSect1nData.rowData=[self.rowDatacopy],最后執(zhí)txnewArrayaddObject:newSect1nData。[0185]在上述實施例一的基礎(chǔ)上,在延遲定時器到時之后,將未來數(shù)據(jù)源復(fù)制給當(dāng)前數(shù)據(jù)源之前,還可以判斷用戶界面是否正在顯示,若用戶界面正在顯示,則將未來數(shù)據(jù)源復(fù)制給當(dāng)前數(shù)據(jù)源。若用戶界面不是正在顯示,則關(guān)閉延遲定時器。如果用戶界面正在顯示,那么說明用戶當(dāng)前正在瀏覽用戶界面,需要將更新數(shù)據(jù)立即展示出來,以便于用戶能夠及時看到更新數(shù)據(jù),如果用戶界面當(dāng)前沒有顯示,那么更新數(shù)據(jù)不要立即展示出來,因為即使展示出來了,用戶也不會去看,更新的意義不大。如果用戶界面不是正在顯示,不會對用戶界面進(jìn)行更新,后續(xù)當(dāng)用戶主動打開用戶界面時,判斷刷新計數(shù)器的值是否為0,當(dāng)刷新計數(shù)器的值不為O時,執(zhí)行數(shù)據(jù)刷新方法,刷新用戶界面,以保證用戶主動打開用戶界面時,可以立刻獲取更新的數(shù)據(jù)。當(dāng)刷新計數(shù)器的值為O時,說明沒有數(shù)據(jù)被更新,此時并不需要對用戶界面進(jìn)行刷新,保持用戶界面的狀態(tài)不變即可,從而能夠避免用戶每次主動打開界面都對界面進(jìn)行刷新,有效節(jié)約數(shù)據(jù)流量,并提高用戶體驗。為了實現(xiàn)上述用戶界面不在當(dāng)前顯示不刷新用戶界面,需要對TableViewModel添加拓展屬性與方法。[0186]屬性:[0187]BOOLisShow;[0188]方法[0189]-(void)viewffillAppear;[0190]-(void)viewffillDisappear;[0191]其中,屬性isShow表示UITabIeView是否正在顯示,方法viewWiIIAppear當(dāng)UITabIeView即將出現(xiàn)時調(diào)用,方法viewWiIIDisappear當(dāng)UITabIeView即將消失時調(diào)用。[ΟΙ92]相應(yīng)的,在實施例二中步驟311之前,判斷isShow==true是否正確,如果isShow==true正確,那么執(zhí)行步驟311,如果isShow==true不正確,那么執(zhí)行步驟314。[0193]進(jìn)一步,在實施例一的基礎(chǔ)上,在啟動延遲定時器之前,還可以進(jìn)一步判斷用戶界面是否正在顯示,若用戶界面正在顯示,則啟動延遲定時器,若用戶界面不是正在顯示,則不啟動延遲定時器,等待下一次更新。用戶界面當(dāng)前沒有顯示,說明用戶已經(jīng)離開了被更新的用戶界面,此時立即更新沒有什么意義,所以沒必要開啟定時器,觸發(fā)后續(xù)的更新操作。[0194]圖6為本發(fā)明實施例四提供的一種用戶界面的刷新裝置的結(jié)構(gòu)示意圖,如圖6所示,本實施例提供的裝置包括:更改模塊11、定時模塊12、復(fù)制模塊13和刷新模塊14。[0195]更改模塊11,用于當(dāng)用戶界面的數(shù)據(jù)被更新時,對未來數(shù)據(jù)源進(jìn)行更改,所述未來數(shù)據(jù)源是下次更新數(shù)據(jù)的數(shù)據(jù)源;[0196]定時模塊12,用于若延遲定時器未開啟,則啟動所述延遲定時器,所述延遲定時器用于記錄所述用戶界面的延遲刷新時間;[0197]復(fù)制模塊13,用于當(dāng)所述延遲定時器到時時,將所述未來數(shù)據(jù)源復(fù)制給當(dāng)前數(shù)據(jù)源,所述當(dāng)前數(shù)據(jù)源是當(dāng)前顯示數(shù)據(jù)的數(shù)據(jù)源;[0198]刷新模塊14,用于根據(jù)所述當(dāng)前數(shù)據(jù)源執(zhí)行數(shù)據(jù)刷新方法,刷新所述用戶界面;[0199]所述定時模塊12還用于在刷新完成后,關(guān)閉所述延遲定時器。[0200]圖7為本發(fā)明實施例五提供的一種用戶界面的刷新裝置的結(jié)構(gòu)示意圖,如圖7所示,在圖6所示裝置的結(jié)構(gòu)基礎(chǔ)上,本實施例提供的裝置還包括:第一判斷模塊15和第二判斷豐旲塊16。[0201]所述第一判斷模塊15用于在所述復(fù)制模塊13將所述未來數(shù)據(jù)源復(fù)制給當(dāng)前數(shù)據(jù)源之前,判斷所述用戶界面是否正在顯示。若所述用戶界面正在顯示,則所述復(fù)制模塊13將所述未來數(shù)據(jù)源復(fù)制給所述當(dāng)前數(shù)據(jù)源。若所述用戶界面不是正在顯示,則所述定時模塊12關(guān)閉所述延遲定時器。[0202]所述第二判斷模塊16用于在所述定時模塊12啟動所述延遲定時器之前,判斷所述用戶界面是否正在顯示。若所述用戶界面正在顯示,則所述定時模塊12啟動所述延遲定時器。若所述用戶界面不是正在顯示,則所述定時模塊12不啟動所述延遲定時器,等待下一次更新。[0203]可選的,用戶界面的刷新裝置也可以只包括第一判斷模塊15或第二判斷模塊16。[0204]可選的,在圖6和圖7所示的用戶界面的刷新裝置的基礎(chǔ)上,還包括初始化模塊,所述初始化模塊用于在初始化TableViewModle時,生成所述延遲定時器,以及創(chuàng)建所述未來數(shù)據(jù)源和當(dāng)前數(shù)據(jù)源。[0205]圖6和圖7所示的用戶界面的刷新裝置,可用于執(zhí)行上述實施例一至實施例三的方案,具體實現(xiàn)方式參照上述實施例的描述,這里不再贅述。[0206]需要說明的是,在本發(fā)明的其他實施例中,上述的用戶界面的刷新裝置還可以包括計數(shù)模塊,計數(shù)模塊用于當(dāng)更改模塊11對未來數(shù)據(jù)源進(jìn)行更改之后,將刷新計數(shù)器的值加1,刷新計數(shù)器用于記錄延遲刷新的次數(shù),所述計數(shù)模塊12還用于在所述定時模塊12關(guān)閉所述延遲定時器之后,將所述刷新計數(shù)器的值設(shè)為O。可選的,該用戶界面的刷新裝置還可以包括第三判斷模塊,第三判斷模塊用于當(dāng)用戶主動打開所述用戶界面時,判斷所述刷新計數(shù)器的值是否為O。所述刷新模塊還用于,當(dāng)所述第三判斷模塊判斷所述刷新計數(shù)器的值不為O時,執(zhí)行數(shù)據(jù)刷新方法,刷新所述用戶界面,當(dāng)所述刷新計數(shù)器的值為O時,保持所述用戶界面狀態(tài)不變。[0207]本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機(jī)可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。[0208]最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍?!局鳈?quán)項】1.一種用戶界面的刷新方法,其特征在于,包括:當(dāng)用戶界面的數(shù)據(jù)被更新時,對未來數(shù)據(jù)源進(jìn)行更改,所述未來數(shù)據(jù)源是下次更新數(shù)據(jù)的數(shù)據(jù)源;若延遲定時器未開啟,則啟動所述延遲定時器,所述延遲定時器用于記錄所述用戶界面的延遲刷新時間;當(dāng)所述延遲定時器到時時,將所述未來數(shù)據(jù)源復(fù)制給當(dāng)前數(shù)據(jù)源,所述當(dāng)前數(shù)據(jù)源是當(dāng)前顯示數(shù)據(jù)的數(shù)據(jù)源;根據(jù)所述當(dāng)前數(shù)據(jù)源執(zhí)行數(shù)據(jù)刷新方法,刷新所述用戶界面;在刷新完成后,關(guān)閉所述延遲定時器。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述未來數(shù)據(jù)源復(fù)制給當(dāng)前數(shù)據(jù)源之前,所述方法還包括:判斷所述用戶界面是否正在顯示;若所述用戶界面正在顯示,則將所述未來數(shù)據(jù)源復(fù)制給所述當(dāng)前數(shù)據(jù)源;若所述用戶界面不是正在顯示,則關(guān)閉所述延遲定時器。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述啟動所述延遲定時器之前還包括:判斷所述用戶界面是否正在顯示;若所述用戶界面正在顯示,則啟動所述延遲定時器;若所述用戶界面不是正在顯示,則不啟動所述延遲定時器,等待下一次更新。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述當(dāng)用戶界面的數(shù)據(jù)被更新時,調(diào)用未來數(shù)據(jù)源方法,對未來數(shù)據(jù)源進(jìn)行更改之前,還包括:初始化TableViewModle時,生成所述延遲定時器,以及創(chuàng)建所述未來數(shù)據(jù)源和當(dāng)前數(shù)據(jù)源。5.根據(jù)權(quán)利要求1-4任一項所述的方法,其特征在于,所述當(dāng)用戶界面的數(shù)據(jù)被更新時,對未來數(shù)據(jù)源進(jìn)行更改之后,還包括:將刷新計數(shù)器的值加I,所述刷新計數(shù)器用于記錄延遲刷新的次數(shù);所述在刷新完成后,關(guān)閉所述延遲定時器之后,還包括:將刷新計數(shù)器的值設(shè)為O。6.根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括:當(dāng)用戶主動打開所述用戶界面時,判斷所述刷新計數(shù)器的值是否為O;當(dāng)所述刷新計數(shù)器的值不為O時,執(zhí)行數(shù)據(jù)刷新方法,刷新所述用戶界面;當(dāng)所述刷新計數(shù)器的值為O時,保持所述用戶界面狀態(tài)不變。7.一種用戶界面的刷新裝置,其特征在于,包括:更改模塊,用于當(dāng)用戶界面的數(shù)據(jù)被更新時,對未來數(shù)據(jù)源進(jìn)行更改,所述未來數(shù)據(jù)源是下次更新數(shù)據(jù)的數(shù)據(jù)源;定時模塊,用于若延遲定時器未開啟,則啟動所述延遲定時器,所述延遲定時器用于記錄所述用戶界面的延遲刷新時間;復(fù)制模塊,用于當(dāng)所述延遲定時器到時時,將所述未來數(shù)據(jù)源復(fù)制給當(dāng)前數(shù)據(jù)源,所述當(dāng)前數(shù)據(jù)源是當(dāng)前顯示數(shù)據(jù)的數(shù)據(jù)源;刷新模塊,用于根據(jù)所述當(dāng)前數(shù)據(jù)源執(zhí)行數(shù)據(jù)刷新方法,刷新所述用戶界面;所述定時模塊還用于在刷新完成后,關(guān)閉所述延遲定時器。8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括第一判斷模塊;所述第一判斷模塊用于在所述復(fù)制模塊將所述未來數(shù)據(jù)源復(fù)制給當(dāng)前數(shù)據(jù)源之前,判斷所述用戶界面是否正在顯示;若所述用戶界面正在顯示,則所述復(fù)制模塊將所述未來數(shù)據(jù)源復(fù)制給所述當(dāng)前數(shù)據(jù)源;若所述用戶界面不是正在顯示,則所述定時模塊關(guān)閉所述延遲定時器。9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括第二判斷模塊;所述第二判斷模塊用于在所述定時模塊啟動所述延遲定時器之前,判斷所述用戶界面是否正在顯示;若所述用戶界面正在顯示,則所述定時模塊啟動所述延遲定時器;若所述用戶界面不是正在顯示,則所述定時模塊不啟動所述延遲定時器,等待下一次更新。10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括初始化模塊;所述初始化模塊用于在初始化TableViewModle時,生成所述延遲定時器,以及創(chuàng)建所述未來數(shù)據(jù)源和當(dāng)前數(shù)據(jù)源。11.根據(jù)權(quán)利要求7-10任一項所述的裝置,其特征在于,還包括:計數(shù)模塊,用于當(dāng)所述更改模塊對未來數(shù)據(jù)源進(jìn)行更改之后,將刷新計數(shù)器的值加I,所述刷新計數(shù)器用于記錄延遲刷新的次數(shù);所述計數(shù)模塊還用于,在所述定時模塊關(guān)閉所述延遲定時器之后,將所述刷新計數(shù)器的值設(shè)為O。12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,還包括:第三判斷模塊,用于當(dāng)用戶主動打開所述用戶界面時,判斷所述刷新計數(shù)器的值是否為O;所述刷新模塊還用于,當(dāng)所述第三判斷模塊判斷所述刷新計數(shù)器的值不為O時,執(zhí)行數(shù)據(jù)刷新方法,刷新所述用戶界面;當(dāng)所述刷新計數(shù)器的值為O時,保持所述用戶界面狀態(tài)不變?!疚臋n編號】G06F9/445GK105955777SQ201610284654【公開日】2016年9月21日【申請日】2016年5月3日【發(fā)明人】徐慧斌【申請人】網(wǎng)易(杭州)網(wǎng)絡(luò)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1