用戶界面和進(jìn)度條的顯示方法及裝置的制造方法
【專利摘要】本發(fā)明實(shí)施例提供了用戶界面和進(jìn)度條的顯示方法及裝置,所述方法包括:將進(jìn)度條庫文件加載到主線程中,并由所述主線程顯示用戶界面;檢測(cè)到耗時(shí)任務(wù)時(shí),創(chuàng)建工作線程執(zhí)行所述耗時(shí)任務(wù);由所述工作線程調(diào)用所述進(jìn)度條庫文件,對(duì)所述耗時(shí)任務(wù)的進(jìn)度條進(jìn)行更新顯示。本發(fā)明實(shí)施例中,工作線程對(duì)進(jìn)度條進(jìn)行更新顯示,突破了傳統(tǒng)的僅由主線程對(duì)進(jìn)度條進(jìn)行更新顯示的限制;而且主線程可以繼續(xù)通過用戶界面與用戶交互,而不再會(huì)因?yàn)樾枰嘛@示進(jìn)度條而阻塞。用戶可以繼續(xù)通過用戶界面進(jìn)行其它操作,大大節(jié)省了用戶的等待時(shí)間,提升了響應(yīng)用戶其它操作的效率,可以提升用戶體驗(yàn)。
【專利說明】
用戶界面和進(jìn)度條的顯示方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及用戶界面顯示技術(shù)領(lǐng)域,具體而言,本發(fā)明涉及一種用戶界面和進(jìn)度條的顯示方法及裝置。
【背景技術(shù)】
[0002]在我國(guó)智能手機(jī)、平板電腦、智能電視等智能終端已經(jīng)廣泛普及。
[0003]智能終端上通常安裝有操作系統(tǒng)。以安卓系統(tǒng)為例,當(dāng)安裝在智能終端的一個(gè)程序啟動(dòng)時(shí),通常會(huì)啟動(dòng)一個(gè)Linux進(jìn)程和一個(gè)主線程。默認(rèn)的情況下,所有該程序的組件都將在該進(jìn)程和主線程中運(yùn)行。主線程主要負(fù)責(zé)處理與UKUser Interface,用戶界面)相關(guān)的事件,如用戶的按鍵事件、觸摸屏幕事件或者滑動(dòng)事件等,并把這些事件分發(fā)到對(duì)應(yīng)的組件進(jìn)行處理。UI包括:GUI(Graphical User Interface,圖形用戶界面)。
[0004]當(dāng)程序需要執(zhí)行耗時(shí)任務(wù)時(shí),例如,利用10(InputOutput,輸入輸出)接口讀寫大文件、對(duì)數(shù)據(jù)庫進(jìn)行操作、或者進(jìn)行網(wǎng)絡(luò)下載等,通常由子線程來執(zhí)行耗時(shí)任務(wù),并且通常需要顯示一個(gè)對(duì)應(yīng)的進(jìn)度條來表示耗時(shí)任務(wù)的執(zhí)行進(jìn)度。
[0005]現(xiàn)有的用戶界面顯示方法包括:在主線程中創(chuàng)建一個(gè)進(jìn)度條;由子線程將耗時(shí)任務(wù)的進(jìn)度值以消息的方式發(fā)送至主線程;由主線程根據(jù)接收的消息中的進(jìn)度值,在用戶界面中顯示耗時(shí)任務(wù)對(duì)應(yīng)的進(jìn)度條。
[0006]然而,現(xiàn)有的用戶界面顯示進(jìn)度條后,在耗時(shí)任務(wù)完成之前,用戶界面通常無法對(duì)用戶的輸入進(jìn)行響應(yīng);也就是說,在此期間用戶通常無法通過用戶界面對(duì)程序進(jìn)行操作,從而容易導(dǎo)致用戶體驗(yàn)不佳。
【發(fā)明內(nèi)容】
[0007]本發(fā)明針對(duì)現(xiàn)有方式的缺點(diǎn),提出一種用戶界面和進(jìn)度條的顯示方法及裝置,用以解決現(xiàn)有技術(shù)存在用戶界面顯示進(jìn)度條的過程中無法響應(yīng)用戶輸入的問題。
[0008]本發(fā)明的實(shí)施例根據(jù)一個(gè)方面,提供了一種用戶界面和進(jìn)度條的顯示方法,包括:
[0009]將進(jìn)度條庫文件加載到主線程中,并由所述主線程顯示用戶界面;
[0010]檢測(cè)到耗時(shí)任務(wù)時(shí),創(chuàng)建工作線程執(zhí)行所述耗時(shí)任務(wù);
[0011]由所述工作線程調(diào)用所述進(jìn)度條庫文件,對(duì)所述耗時(shí)任務(wù)的進(jìn)度條進(jìn)行更新顯不O
[0012]較佳地,所述調(diào)用所述進(jìn)度條庫文件,對(duì)所述耗時(shí)任務(wù)的進(jìn)度條進(jìn)行更新顯示,具體包括:
[0013]由所述工作線程確定出所述耗時(shí)任務(wù)的進(jìn)度值;
[0014]調(diào)用所述進(jìn)度條庫文件中涉及進(jìn)度條的接口函數(shù),根據(jù)所述進(jìn)度值,在進(jìn)度條界面中更新顯示所述耗時(shí)任務(wù)的進(jìn)度條。
[0015]較佳地,所述確定出所述耗時(shí)任務(wù)的進(jìn)度值之前,還包括:
[0016]由所述工作線程調(diào)用所述進(jìn)度條庫文件中的涉及進(jìn)度條的接口函數(shù),根據(jù)預(yù)設(shè)的初始進(jìn)度值,在進(jìn)度條界面中顯示所述進(jìn)度條。
[0017]較佳地,所述方法還包括:接收到針對(duì)所述進(jìn)度條界面的操作后,根據(jù)該操作對(duì)所述進(jìn)度條界面進(jìn)行更新顯示。
[0018]較佳地,所述進(jìn)度條庫文件具體為靜態(tài)庫文件或動(dòng)態(tài)庫文件。
[0019]本發(fā)明的實(shí)施例根據(jù)另一個(gè)方面,還提供了一種用戶界面和進(jìn)度條的顯示裝置,包括:
[0020]用戶界面顯示模塊,用于將進(jìn)度條庫文件加載到主線程中,并由所述主線程顯示用戶界面;
[0021]耗時(shí)任務(wù)執(zhí)行模塊,用于檢測(cè)到耗時(shí)任務(wù)時(shí),創(chuàng)建工作線程執(zhí)行所述耗時(shí)任務(wù);
[0022]進(jìn)度條顯示模塊,用于由所述工作線程調(diào)用所述進(jìn)度條庫文件,對(duì)所述耗時(shí)任務(wù)的進(jìn)度條進(jìn)行更新顯示。
[0023]較佳地,所述進(jìn)度條顯示模塊具體用于由所述工作線程確定出所述耗時(shí)任務(wù)的進(jìn)度值;調(diào)用所述進(jìn)度條庫文件中涉及進(jìn)度條的接口函數(shù),根據(jù)所述進(jìn)度值,在進(jìn)度條界面中更新顯示所述耗時(shí)任務(wù)的進(jìn)度條。
[0024]較佳地,所述進(jìn)度條顯示模塊還用于在確定出所述耗時(shí)任務(wù)的進(jìn)度值之前,由所述工作線程調(diào)用所述進(jìn)度條庫文件中的涉及進(jìn)度條的接口函數(shù),根據(jù)預(yù)設(shè)的初始進(jìn)度值,在進(jìn)度條界面中顯示所述進(jìn)度條。
[0025]較佳地,所述進(jìn)度條顯示模塊還用于接收到針對(duì)所述進(jìn)度條界面的操作后,根據(jù)該操作對(duì)所述進(jìn)度條界面進(jìn)行更新顯示。
[0026]較佳地,所述進(jìn)度條庫文件具體為靜態(tài)庫文件或動(dòng)態(tài)庫文件。
[0027]本發(fā)明實(shí)施例中,將進(jìn)度條庫文件加載到主線程中,并由主線程顯示用戶界面;檢測(cè)到耗時(shí)任務(wù)時(shí),創(chuàng)建工作線程執(zhí)行耗時(shí)任務(wù);由工作線程調(diào)用進(jìn)度條庫文件,對(duì)耗時(shí)任務(wù)的進(jìn)度條進(jìn)行更新顯示。可見,本發(fā)明實(shí)施例中,工作線程調(diào)用加載在主線程中的庫文件對(duì)進(jìn)度條進(jìn)行更新顯示,突破了傳統(tǒng)的僅由主線程(單線程)對(duì)進(jìn)度條進(jìn)行更新顯示的限制;而且,工作線程執(zhí)行耗時(shí)任務(wù)并更新顯示進(jìn)度條,分擔(dān)了主線程的負(fù)荷,使得主線程可以繼續(xù)通過用戶界面與用戶交互,而不再會(huì)因?yàn)樾枰嘛@示進(jìn)度條而阻塞用戶界面。也就是說,在耗時(shí)任務(wù)執(zhí)行(即進(jìn)度條更新顯示)過程中,用戶可以繼續(xù)通過用戶界面進(jìn)行其它操作,與傳統(tǒng)的需等待進(jìn)度條更新顯示完畢才可繼續(xù)通過用戶界面進(jìn)行其它操作相比,大大節(jié)省了用戶的等待時(shí)間,提升了響應(yīng)用戶其它操作的效率,可以提升用戶體驗(yàn)。
[0028]而且,本發(fā)明實(shí)施例中,工作線程未對(duì)用戶界面進(jìn)行更新顯示等操作,仍由主線程(單線程)對(duì)用戶界面進(jìn)行更新顯示等操作,因此針對(duì)用戶界面元素的操作依然是線程安全的。無需針對(duì)主線程、工作線程,在程序代碼層、框架層上層、框架層下層、系統(tǒng)庫層以及系統(tǒng)調(diào)用層面,層層加鎖。與上述雙線程的層層加鎖的方案相比,代碼編寫或者改動(dòng)的工作量大大減少,整個(gè)用戶界面涉及的軟件系統(tǒng)更加簡(jiǎn)單、可靠性更高。
[0029]進(jìn)一步,本發(fā)明實(shí)施例中,僅需要增加進(jìn)度條庫文件,無需對(duì)框架層中除系統(tǒng)庫的庫文件之外的代碼進(jìn)行改動(dòng),與改動(dòng)庫文件之外的框架層相比,工作量較小,可靠性更高。既然存在進(jìn)度條庫文件,程序中就無需編寫諸如創(chuàng)建進(jìn)度條等進(jìn)度條相關(guān)的源代碼,直接調(diào)用進(jìn)度條庫文件即可,程序代碼的復(fù)雜度大大下降,減少了程序員的工作量,有利于提升程序代碼的可靠性。
[0030]本發(fā)明實(shí)施例中的進(jìn)度條庫文件是編譯后的二進(jìn)制文件,與程序的編程語言無關(guān),程序直接調(diào)用即可,與雙線程層層加鎖的方案相比,增強(qiáng)了程序的可移植性和適用范圍。
[0031]此外,本發(fā)明實(shí)施例中,進(jìn)度條庫文件相比于程序源代碼對(duì)程序的影響較低,進(jìn)度條庫文件出現(xiàn)邏輯問題或者語法問題等異常時(shí),容易添加對(duì)應(yīng)的處理方式,不容易導(dǎo)致整個(gè)程序的崩潰,有利于提升整個(gè)程序的可靠性。
[0032]本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
【附圖說明】
[0033]本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:
[0034]圖1為本發(fā)明實(shí)施例的用戶界面和進(jìn)度條的顯示方法的流程示意圖;
[0035]圖2為本發(fā)明實(shí)施例的用戶界面和進(jìn)度條的顯示裝置的內(nèi)部結(jié)構(gòu)的框架示意圖。
【具體實(shí)施方式】
[0036]下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。
[0037]本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個(gè)”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時(shí),它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“親接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個(gè)或更多個(gè)相關(guān)聯(lián)的列出項(xiàng)的全部或任一單元和全部組合。
[0038]本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會(huì)用理想化或過于正式的含義來解釋。
[0039]本技術(shù)領(lǐng)域技術(shù)人員可以理解,這里所使用的“終端”、“終端設(shè)備”既包括無線信號(hào)接收器的設(shè)備,其僅具備無發(fā)射能力的無線信號(hào)接收器的設(shè)備,又包括接收和發(fā)射硬件的設(shè)備,其具有能夠在雙向通信鏈路上,進(jìn)行雙向通信的接收和發(fā)射硬件的設(shè)備。這種設(shè)備可以包括:蜂窩或其他通信設(shè)備,其具有單線路顯示器或多線路顯示器或沒有多線路顯示器的蜂窩或其他通信設(shè)備;PCS(Personal Communicat1ns Service,個(gè)人通信系統(tǒng)),其可以組合語音、數(shù)據(jù)處理、傳真和/或數(shù)據(jù)通信能力;PDA(Personal Digital Assistant,個(gè)人數(shù)字助理),其可以包括射頻接收器、尋呼機(jī)、互聯(lián)網(wǎng)/內(nèi)聯(lián)網(wǎng)訪問、網(wǎng)絡(luò)瀏覽器、記事本、日歷和/或GPS(Global Posit1ning System,全球定位系統(tǒng))接收器;常規(guī)膝上型和/或掌上型計(jì)算機(jī)或其他設(shè)備,其具有和/或包括射頻接收器的常規(guī)膝上型和/或掌上型計(jì)算機(jī)或其他設(shè)備。這里所使用的“終端”、“終端設(shè)備”可以是便攜式、可運(yùn)輸、安裝在交通工具(航空、海運(yùn)和/或陸地)中的,或者適合于和/或配置為在本地運(yùn)行,和/或以分布形式,運(yùn)行在地球和/或空間的任何其他位置運(yùn)行。這里所使用的“終端”、“終端設(shè)備”還可以是通信終端、上網(wǎng)終端、音樂/視頻播放終端,例如可以是PDA、MID(Mobile Internet Device,移動(dòng)互聯(lián)網(wǎng)設(shè)備)和/或具有音樂/視頻播放功能的移動(dòng)電話,也可以是智能電視、機(jī)頂盒等設(shè)備。
[0040]本發(fā)明的發(fā)明人注意到,現(xiàn)有的用戶界面顯示方法中,通常只允許一個(gè)線程操作用戶界面元素,包括GUI的界面元素和進(jìn)度條相關(guān)的元素。例如,qt平臺(tái)的GUI模塊和安卓系統(tǒng)的GUI模塊都是僅支持單線程操作用戶界面元素的。
[0041]本發(fā)明的發(fā)明人經(jīng)過研究發(fā)現(xiàn),假設(shè)采用多線程操作用戶界面元素,程序設(shè)計(jì)非常復(fù)雜,而且問題很多。
[0042]具體地,多線程需要考慮線程的安全性;目前,通常通過線程之間共享資源的加鎖機(jī)制,來實(shí)現(xiàn)線程的安全性。例如,假設(shè)多個(gè)線程向同一個(gè)用戶界面(共享資源)的元素進(jìn)行操作,最后得到的結(jié)果通常是不確定的,容易出現(xiàn)諸如程序崩潰等意外后果。因此,需要在共享同一用戶界面的各線程中增設(shè)互斥鎖,以保證一段時(shí)間內(nèi)只有一個(gè)線程對(duì)該用戶界面的元素進(jìn)行操作。
[0043]然而,本發(fā)明的發(fā)明人經(jīng)過研究發(fā)現(xiàn),用戶界面的操作顯示流程較為復(fù)雜。首先,程序接收用戶針對(duì)用戶界面的操作的流程包括:事件輸入驅(qū)動(dòng)接收用戶輸入的操作事件,調(diào)用系統(tǒng)庫(例如Iibui庫)中的庫文件例如(Event hub)將操作事件,從框架層下層傳輸?shù)娇蚣軐由蠈?例如,android, view.Surface、android.view.View和/或GLSurfaceView等)、從框架層上層傳輸至程序。
[0044]其次,程序顯示針對(duì)用戶界面的操作的流程包括:程序根據(jù)操作事件確定出用戶界面更新信息,經(jīng)過框架層上層,傳輸至框架層下層(例如,Surface JNI),調(diào)用系統(tǒng)庫中的庫文件(例如,Surface)將用戶界面更新信息傳輸至顯示驅(qū)動(dòng)(例如FrameBuffer驅(qū)動(dòng)),由顯示驅(qū)動(dòng)對(duì)用戶界面進(jìn)行顯示更新。
[0045]因此,對(duì)多線程進(jìn)行加鎖,需要在程序代碼層、框架層上層、框架層下層、系統(tǒng)庫層以及系統(tǒng)調(diào)用層面,層層加鎖;造成涉及用戶界面的整個(gè)軟件系統(tǒng)非常復(fù)雜,很容易出現(xiàn)多種問題O例如,諸如DestoryWindow等函數(shù)會(huì)失效,導(dǎo)致系統(tǒng)資源無法釋放;有時(shí)甚至?xí)?bào)內(nèi)存非法而異常終止程序等等。
[0046]而且,機(jī)械地設(shè)置多線程操作用戶界面的元素,不僅需要改動(dòng)程序的源代碼,還需要改動(dòng)系統(tǒng)框架層中庫文件之外的源代碼,難度很大,工作量相當(dāng)巨大,容易出現(xiàn)邏輯錯(cuò)誤等,導(dǎo)致程序出現(xiàn)各種問題;程序的可移植非常差,適用面非常窄。
[0047]本發(fā)明實(shí)施例中,將進(jìn)度條庫文件加載到主線程中,并由主線程顯示用戶界面;檢測(cè)到耗時(shí)任務(wù)時(shí),創(chuàng)建工作線程執(zhí)行耗時(shí)任務(wù);由工作線程調(diào)用進(jìn)度條庫文件,對(duì)耗時(shí)任務(wù)的進(jìn)度條進(jìn)行更新顯示??梢?,本發(fā)明實(shí)施例中,工作線程調(diào)用加載在主線程中的庫文件對(duì)進(jìn)度條進(jìn)行更新顯示,突破了傳統(tǒng)的僅由主線程(單線程)對(duì)進(jìn)度條進(jìn)行更新顯示的限制;而且,工作線程執(zhí)行耗時(shí)任務(wù)并更新顯示進(jìn)度條,分擔(dān)了主線程的負(fù)荷,使得主線程可以繼續(xù)通過用戶界面與用戶交互,而不再會(huì)因?yàn)樾枰嘛@示進(jìn)度條而阻塞用戶界面。也就是說,在耗時(shí)任務(wù)執(zhí)行(即進(jìn)度條更新顯示)過程中,用戶可以繼續(xù)通過用戶界面進(jìn)行其它操作,與傳統(tǒng)的需等待進(jìn)度條更新顯示完畢才可繼續(xù)通過用戶界面進(jìn)行其它操作相比,大大節(jié)省了用戶的等待時(shí)間,提升了響應(yīng)用戶其它操作的效率,可以提升用戶體驗(yàn)。
[0048]而且,本發(fā)明實(shí)施例中,工作線程未對(duì)用戶界面進(jìn)行更新顯示等操作,仍由主線程(單線程)對(duì)用戶界面進(jìn)行更新顯示等操作,因此針對(duì)用戶界面元素的操作依然是線程安全的。無需針對(duì)主線程、工作線程,在程序代碼層、框架層上層、框架層下層、系統(tǒng)庫層以及系統(tǒng)調(diào)用層面,層層加鎖。與上述雙線程的層層加鎖的方案相比,代碼編寫或者改動(dòng)的工作量大大減少,整個(gè)用戶界面涉及的軟件系統(tǒng)更加簡(jiǎn)單、可靠性更高。
[0049]下面結(jié)合附圖具體介紹本發(fā)明實(shí)施例的技術(shù)方案。
[0050]本發(fā)明實(shí)施例的智能終端可以是智能手機(jī)、平板電腦、電子閱讀器、PDA等終端設(shè)備。
[0051]智能終端中安裝有操作系統(tǒng)。較佳地,智能終端安裝有基于Linux內(nèi)核的操作系統(tǒng),包括:傳統(tǒng)意義上的Linux操作系統(tǒng)或Unix操作系統(tǒng),也可以是基于Linux操作系統(tǒng)衍生出來的Android系統(tǒng)、Ubuntu系統(tǒng)等等。
[0052]本發(fā)明實(shí)施例的智能終端中設(shè)置有系統(tǒng)的框架層??蚣軐又邪ㄏ到y(tǒng)庫。在系統(tǒng)庫中設(shè)置進(jìn)度條庫文件。進(jìn)度條庫文件具體可以為靜態(tài)庫文件或動(dòng)態(tài)庫文件。
[0053]進(jìn)度條庫文件中包括多個(gè)涉及進(jìn)度條的接口函數(shù)。涉及進(jìn)度條的接口函數(shù)可以包括:進(jìn)度條顯示函數(shù)、進(jìn)度條關(guān)閉函數(shù)、進(jìn)度條界面設(shè)置函數(shù)、進(jìn)度顯示范圍設(shè)置函數(shù)、和進(jìn)度值設(shè)置函數(shù)等。進(jìn)度條界面設(shè)置函數(shù)可以包括:進(jìn)度條界面尺寸設(shè)置函數(shù)和進(jìn)度條界面位置設(shè)置函數(shù)。
[0054]本發(fā)明實(shí)施例提供的用戶界面和進(jìn)度條的顯示方法的流程示意圖如圖1所示,包括如下步驟:
[0055]SlOl:將進(jìn)度條庫文件加載到主線程中,并由主線程顯示用戶界面。
[0056]具體地,程序啟動(dòng)時(shí),創(chuàng)建主線程,將進(jìn)度條庫文件加載到主線程中;由主線程顯示用戶界面(User Interface),并對(duì)用戶針對(duì)用戶界面的輸入進(jìn)行響應(yīng)。用戶界面可以包括:GUI (Graphical User Interface,圖形用戶界面)。
[0057]較佳地,進(jìn)度條庫文件具體可以為靜態(tài)庫文件或動(dòng)態(tài)庫文件。
[0058]若進(jìn)度條庫文件為靜態(tài)庫文件,在編譯程序源代碼時(shí)鏈接進(jìn)度條庫文件的源代碼,即將程序的源代碼及其鏈接的進(jìn)度條庫文件的源代碼一起進(jìn)行編譯,編譯后的程序中包含進(jìn)度條庫文件;當(dāng)程序啟動(dòng)時(shí),創(chuàng)建進(jìn)程,該進(jìn)程中已包括進(jìn)度條庫文件和主線程,將進(jìn)度條庫文件加載到主線程中。
[0059]進(jìn)一步,進(jìn)度條庫文件的源代碼可以由符合ANSC(AMERICAN NAT1NAL STANDARDSINSTITUT,美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì))C標(biāo)準(zhǔn)的語言編寫;例如,進(jìn)度條庫文件的源代碼可以由符合ANSC C99標(biāo)準(zhǔn)的語言編寫。這樣的進(jìn)度條庫文件的源代碼可以被多種編程語言(例如C、C++、JAVA或者D印hi等等)鏈接調(diào)用。
[0060]若進(jìn)度條庫文件為動(dòng)態(tài)庫文件,進(jìn)度條文件獨(dú)立編譯后供動(dòng)態(tài)鏈接調(diào)用;編譯后的程序中不包含進(jìn)度條庫文件;當(dāng)程序啟動(dòng)時(shí),創(chuàng)建進(jìn)程,該進(jìn)程中只包含主線程;由主線程動(dòng)態(tài)鏈接進(jìn)度條庫文件,將進(jìn)度條庫文件加載到主線程中。
[0061]更優(yōu)的,進(jìn)度條庫文件為二進(jìn)制文件,具有語言無關(guān)性,可以支持多種編程語言編寫的程序調(diào)用進(jìn)度條庫文件。例如,采用C、C++、JAVA或者Dephi語言編寫的程序都可以調(diào)用進(jìn)度條庫文件。
[0062]S102:檢測(cè)到耗時(shí)任務(wù)時(shí),創(chuàng)建工作線程執(zhí)行耗時(shí)任務(wù)。
[0063]具體地,檢測(cè)到待執(zhí)行耗時(shí)任務(wù)時(shí),由主線程創(chuàng)建工作線程執(zhí)行耗時(shí)任務(wù)。
[0064]耗時(shí)任務(wù)可以是利用10(lnputOutput,輸入輸出)接口的大文件讀寫任務(wù)、數(shù)據(jù)庫操作任務(wù)、或者網(wǎng)絡(luò)下載任務(wù)等等。程序通常需要花費(fèi)較多的時(shí)間(例如,幾十秒、幾分鐘或者幾十分鐘等等)來執(zhí)行耗時(shí)任務(wù)。
[0065]由工作線程來執(zhí)行耗時(shí)任務(wù),可以減輕主線程的負(fù)荷,可以防止主線程因執(zhí)行耗時(shí)任何而阻塞其它任務(wù),例如阻塞對(duì)用戶輸入的響應(yīng)。
[0066]S103:由工作線程調(diào)用進(jìn)度條庫文件,對(duì)耗時(shí)任務(wù)的進(jìn)度條進(jìn)行更新顯示。
[0067]本步驟中,由工作線程確定出耗時(shí)任務(wù)的進(jìn)度值。
[0068]工作線程調(diào)用進(jìn)度條庫文件中涉及進(jìn)度條的接口函數(shù),根據(jù)確定出的耗時(shí)任務(wù)的進(jìn)度值,在進(jìn)度條界面中更新顯示耗時(shí)任務(wù)的進(jìn)度條。
[0069]具體地,工作線程調(diào)用進(jìn)度條庫文件中的進(jìn)度值設(shè)置函數(shù)、以及進(jìn)度條顯示函數(shù);調(diào)用進(jìn)度值設(shè)置函數(shù)根據(jù)耗時(shí)任務(wù)的進(jìn)度值,對(duì)進(jìn)度條界面中的進(jìn)度條的圖像進(jìn)行更新;調(diào)用進(jìn)度條顯示函數(shù),顯示進(jìn)度條界面,并在進(jìn)度條界面中顯示更新后的進(jìn)度條的圖像。進(jìn)一步,對(duì)應(yīng)更新后的進(jìn)度條的圖像,顯示耗時(shí)任務(wù)的進(jìn)度值。
[0070]較佳地,工作線程在確定出耗時(shí)任務(wù)的進(jìn)度值之前,還由工作線程調(diào)用進(jìn)度條庫文件中的涉及進(jìn)度條的接口函數(shù),根據(jù)預(yù)設(shè)的初始進(jìn)度值,在進(jìn)度條界面中顯示進(jìn)度條。
[0071]具體地,工作線程檢測(cè)到耗時(shí)任務(wù)開始時(shí),獲取預(yù)設(shè)的進(jìn)度條界面參數(shù)、進(jìn)度顯示范圍參數(shù)、以及初始進(jìn)度值。
[0072]其中,進(jìn)度顯示范圍參數(shù)可以包括:進(jìn)度顯示上限參數(shù)和進(jìn)度顯示下限參數(shù);例如,0%為進(jìn)度顯示下限參數(shù),100%為進(jìn)度顯示上限參數(shù)。初始進(jìn)度值可以預(yù)設(shè)為0%。
[0073]本發(fā)明實(shí)施例支持程序預(yù)設(shè)進(jìn)度條相關(guān)的參數(shù)??梢栽诔绦蛑蓄A(yù)設(shè)進(jìn)度條界面參數(shù)、進(jìn)度顯示范圍參數(shù)和初始進(jìn)度值;可以在程序啟動(dòng)時(shí)將上述預(yù)設(shè)的參數(shù)加載到主線程所在的進(jìn)程中,本步驟中,由于工作進(jìn)程與上述預(yù)設(shè)的參考處于同一進(jìn)程中,可以直接獲取預(yù)設(shè)的進(jìn)度條界面參數(shù)、進(jìn)度顯示范圍參數(shù)、以及初始進(jìn)度值。
[0074]本發(fā)明實(shí)施例支持進(jìn)度條庫文件預(yù)設(shè)進(jìn)度條相關(guān)的參數(shù)。在進(jìn)度條庫文件中預(yù)設(shè)進(jìn)度條界面參數(shù)、進(jìn)度顯示范圍參數(shù)和初始進(jìn)度值;本步驟中,工作線程可以直接從進(jìn)度條庫文件中獲取預(yù)設(shè)的進(jìn)度條界面參數(shù)、進(jìn)度顯示范圍參數(shù)和初始進(jìn)度值。
[0075]工作線程檢測(cè)到耗時(shí)任務(wù)開始時(shí),獲取預(yù)設(shè)的進(jìn)度條界面參數(shù)、進(jìn)度顯示范圍參數(shù)、以及初始進(jìn)度值,并調(diào)用進(jìn)度條庫文件中的進(jìn)度條顯示函數(shù)、進(jìn)度條界面設(shè)置函數(shù)、進(jìn)度顯示范圍設(shè)置函數(shù)、和進(jìn)度值設(shè)置函數(shù)。
[0076]具體地,工作線程調(diào)用進(jìn)度條界面設(shè)置函數(shù),根據(jù)進(jìn)度條界面參數(shù),確定出進(jìn)度條界面及進(jìn)度條的顯示位置和尺寸等參數(shù);調(diào)用進(jìn)度顯示范圍設(shè)置函數(shù),根據(jù)進(jìn)度顯示范圍參數(shù),確定出進(jìn)度條的顯示范圍數(shù)值;調(diào)用進(jìn)度值設(shè)置函數(shù),根據(jù)進(jìn)度條的顯示范圍數(shù)值和初始進(jìn)度值,確定出進(jìn)度條的初始圖像(此時(shí)通常為未著色或者淺色的進(jìn)度條圖像);調(diào)用進(jìn)度條顯示函數(shù),根據(jù)確定出的進(jìn)度條界面的顯示位置和尺寸等參數(shù),顯示進(jìn)度條界面,并根據(jù)進(jìn)度條的顯示位置和尺寸等參數(shù),在進(jìn)度條界面中顯示進(jìn)度條的初始圖像。進(jìn)一步,可以對(duì)應(yīng)進(jìn)度條的初始圖像顯示初始進(jìn)度值。
[0077]更優(yōu)的,工作線程顯示進(jìn)度條的初始圖像后,可以調(diào)用進(jìn)度值設(shè)置函數(shù),根據(jù)進(jìn)度條的顯示范圍數(shù)值、以及實(shí)時(shí)獲取的耗時(shí)任務(wù)的進(jìn)度值,對(duì)待顯示的進(jìn)度條的圖像進(jìn)行更新(例如進(jìn)度條中代表進(jìn)度值的深色塊從左往右延伸);調(diào)用進(jìn)度條顯示函數(shù),在進(jìn)度條界面中顯示更新后的進(jìn)度條的圖像。進(jìn)一步,對(duì)應(yīng)更新后的進(jìn)度條的圖像,顯示耗時(shí)任務(wù)的進(jìn)度值。
[0078]更優(yōu)的,接收到針對(duì)進(jìn)度條界面的操作后,根據(jù)該操作對(duì)進(jìn)度條界面進(jìn)行更新顯不O
[0079]較佳地,工作線程接收到用戶針對(duì)進(jìn)度條界面或進(jìn)度條的選定和拖曳操作后,根據(jù)選定和拖曳操作確定出位移參數(shù);調(diào)用進(jìn)度條界面設(shè)置函數(shù),根據(jù)位移參數(shù),對(duì)進(jìn)度條界面及進(jìn)度條的顯示位置參數(shù)進(jìn)行更新;調(diào)用進(jìn)度條顯示函數(shù),根據(jù)更新后的顯示位置參數(shù),顯示進(jìn)度條界面及進(jìn)度條。
[0080]較佳地,工作線程接收到用戶針對(duì)進(jìn)度條界面或進(jìn)度條的放大或縮小操作后,根據(jù)放大和縮小操作確定出尺寸變化參數(shù);調(diào)用進(jìn)度條界面設(shè)置函數(shù),根據(jù)尺寸變化參數(shù),對(duì)進(jìn)度條界面及進(jìn)度條的顯示尺寸參數(shù)進(jìn)行更新;調(diào)用進(jìn)度條顯示函數(shù),根據(jù)更新后的顯示尺寸參數(shù),顯示進(jìn)度條界面及進(jìn)度條。
[0081]事實(shí)上,當(dāng)工作線程檢測(cè)到耗時(shí)任務(wù)結(jié)束后,調(diào)用進(jìn)度條文件中的進(jìn)度條關(guān)閉函數(shù),結(jié)束進(jìn)度條界面和進(jìn)度條的顯示。
[0082]本領(lǐng)域技術(shù)人員可以理解,上述耗時(shí)任務(wù)的執(zhí)行過程中,即進(jìn)度條從開始顯示到結(jié)束顯示的過程中,耗時(shí)任務(wù)和對(duì)進(jìn)度條的更新顯示操作都由工作線程執(zhí)行;主線程未執(zhí)行對(duì)進(jìn)度條的更新顯示操作,對(duì)進(jìn)度條的更新顯示操作不會(huì)阻塞主線程,從而主線程可以一直對(duì)用戶界面進(jìn)行顯示操作,對(duì)通過用戶界面接收到的用戶輸入進(jìn)行及時(shí)得響應(yīng),使得用戶可以在耗時(shí)任務(wù)執(zhí)行過程中,無需等待進(jìn)度條顯示完成,就通過用戶界面進(jìn)行其它操作,提升了人機(jī)交互的效率,節(jié)省了用戶的時(shí)間,可以提升用戶體驗(yàn)。
[0083]基于上述用戶界面和進(jìn)度條的顯示方法,本發(fā)明實(shí)施例還提供了一種用戶界面和進(jìn)度條的顯示裝置,該裝置的內(nèi)部結(jié)構(gòu)的框架示意圖如圖2所示,包括:用戶界面顯示模塊201、耗時(shí)任務(wù)執(zhí)行模塊202和進(jìn)度條顯示模塊203。
[0084]其中,用戶界面顯示模塊201用于將進(jìn)度條庫文件加載到主線程中,并由主線程顯示用戶界面。
[0085]耗時(shí)任務(wù)執(zhí)行模塊202用于檢測(cè)到耗時(shí)任務(wù)時(shí),創(chuàng)建工作線程執(zhí)行耗時(shí)任務(wù)。
[0086]進(jìn)度條顯示模塊203用于由工作線程調(diào)用進(jìn)度條庫文件,對(duì)耗時(shí)任務(wù)的進(jìn)度條進(jìn)行更新顯示。
[0087]具體地,進(jìn)度條顯示模塊203用于由工作線程確定出耗時(shí)任務(wù)的進(jìn)度值;調(diào)用進(jìn)度條庫文件中涉及進(jìn)度條的接口函數(shù),根據(jù)進(jìn)度值,在進(jìn)度條界面中更新顯示耗時(shí)任務(wù)的進(jìn)度條。其中,進(jìn)度條庫文件具體可以為靜態(tài)庫文件或動(dòng)態(tài)庫文件。
[0088]較佳地,進(jìn)度條顯示模塊203還用于在確定出耗時(shí)任務(wù)的進(jìn)度值之前,由工作線程調(diào)用進(jìn)度條庫文件中的涉及進(jìn)度條的接口函數(shù),根據(jù)預(yù)設(shè)的初始進(jìn)度值,在進(jìn)度條界面中顯示進(jìn)度條。
[0089]較佳地,進(jìn)度條顯示模塊203還用于接收到針對(duì)進(jìn)度條界面的操作后,根據(jù)該操作對(duì)進(jìn)度條界面進(jìn)行更新顯示。
[0090]上述用戶界面顯示模塊201、耗時(shí)任務(wù)執(zhí)行模塊202和進(jìn)度條顯示模塊203功能的實(shí)現(xiàn)方法,可以參考上述圖1所示的流程步驟的具體內(nèi)容,此處不再贅述。
[0091]事實(shí)上,本發(fā)明實(shí)施例智能終端,可以包括本發(fā)明實(shí)施例的用戶界面和進(jìn)度條的顯示裝置。
[0092]本發(fā)明實(shí)施例中,將進(jìn)度條庫文件加載到主線程中,并由主線程顯示用戶界面;檢測(cè)到耗時(shí)任務(wù)時(shí),創(chuàng)建工作線程執(zhí)行耗時(shí)任務(wù);由工作線程調(diào)用進(jìn)度條庫文件,對(duì)耗時(shí)任務(wù)的進(jìn)度條進(jìn)行更新顯示。可見,本發(fā)明實(shí)施例中,工作線程調(diào)用加載在主線程中的庫文件對(duì)進(jìn)度條進(jìn)行更新顯示,突破了傳統(tǒng)的僅由主線程(單線程)對(duì)進(jìn)度條進(jìn)行更新顯示的限制;而且,工作線程執(zhí)行耗時(shí)任務(wù)并更新顯示進(jìn)度條,分擔(dān)了主線程的負(fù)荷,使得主線程可以繼續(xù)通過用戶界面與用戶交互,而不再會(huì)因?yàn)樾枰嘛@示進(jìn)度條而阻塞用戶界面。也就是說,在耗時(shí)任務(wù)執(zhí)行(即進(jìn)度條更新顯示)過程中,用戶可以繼續(xù)通過用戶界面進(jìn)行其它操作,與傳統(tǒng)的需等待進(jìn)度條更新顯示完畢才可繼續(xù)通過用戶界面進(jìn)行其它操作相比,大大節(jié)省了用戶的等待時(shí)間,提升了響應(yīng)用戶其它操作的效率,可以提升用戶體驗(yàn)。
[0093]而且,本發(fā)明實(shí)施例中,工作線程未對(duì)用戶界面進(jìn)行更新顯示等操作,仍由主線程(單線程)對(duì)用戶界面進(jìn)行更新顯示等操作,因此針對(duì)用戶界面元素的操作依然是線程安全的。無需針對(duì)主線程、工作線程,在程序代碼層、框架層上層、框架層下層、系統(tǒng)庫層以及系統(tǒng)調(diào)用層面,層層加鎖。與上述雙線程的層層加鎖的方案相比,代碼編寫或者改動(dòng)的工作量大大減少,整個(gè)用戶界面涉及的軟件系統(tǒng)更加簡(jiǎn)單、可靠性更高。
[0094]進(jìn)一步,本發(fā)明實(shí)施例中,僅需要增加進(jìn)度條庫文件,無需對(duì)框架層中除系統(tǒng)庫的庫文件之外的代碼進(jìn)行改動(dòng),與改動(dòng)庫文件之外的框架層相比,工作量較小,可靠性更高。既然存在進(jìn)度條庫文件,程序中就無需編寫諸如創(chuàng)建進(jìn)度條等進(jìn)度條相關(guān)的源代碼,直接調(diào)用進(jìn)度條庫文件即可,程序代碼的復(fù)雜度大大下降,減少了程序員的工作量,有利于提升程序代碼的可靠性。
[0095]本發(fā)明實(shí)施例中的進(jìn)度條庫文件是編譯后的二進(jìn)制文件,與程序的編程語言無關(guān),程序直接調(diào)用即可,與雙線程層層加鎖的方案相比,增強(qiáng)了程序的可移植性和適用范圍。
[0096]此外,本發(fā)明實(shí)施例中,進(jìn)度條庫文件相比于程序源代碼對(duì)程序的影響較低,進(jìn)度條庫文件出現(xiàn)邏輯問題或者語法問題等異常時(shí),容易添加對(duì)應(yīng)的處理方式,不容易導(dǎo)致整個(gè)程序的崩潰,有利于提升整個(gè)程序的可靠性。
[0097]本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請(qǐng)中所述操作中的一項(xiàng)或多項(xiàng)的設(shè)備。這些設(shè)備可以為所需的目的而專門設(shè)計(jì)和制造,或者也可以包括通用計(jì)算機(jī)中的已知設(shè)備。這些設(shè)備具有存儲(chǔ)在其內(nèi)的計(jì)算機(jī)程序,這些計(jì)算機(jī)程序選擇性地激活或重構(gòu)。這樣的計(jì)算機(jī)程序可以被存儲(chǔ)在設(shè)備(例如,計(jì)算機(jī))可讀介質(zhì)中或者存儲(chǔ)在適于存儲(chǔ)電子指令并分別耦聯(lián)到總線的任何類型的介質(zhì)中,所述計(jì)算機(jī)可讀介質(zhì)包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、CD-ROM、和磁光盤)、R0M(Read-0nly Memory,只讀存儲(chǔ)器)、RAM (Random Access Memory,隨即存儲(chǔ)器)、EPROM(Erasable ProgrammableRead-Only Memory,可擦寫可編程只讀存儲(chǔ)器)、EEPR0M(E1 ectricalIy ErasableProgrammable Read-Only Memory,電可擦可編程只讀存儲(chǔ)器)、閃存、磁性卡片或光線卡片。也就是,可讀介質(zhì)包括由設(shè)備(例如,計(jì)算機(jī))以能夠讀的形式存儲(chǔ)或傳輸信息的任何介質(zhì)。
[0098]本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以用計(jì)算機(jī)程序指令來實(shí)現(xiàn)這些結(jié)構(gòu)圖和/或框圖和/或流圖中的每個(gè)框以及這些結(jié)構(gòu)圖和/或框圖和/或流圖中的框的組合。本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以將這些計(jì)算機(jī)程序指令提供給通用計(jì)算機(jī)、專業(yè)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來實(shí)現(xiàn),從而通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來執(zhí)行本發(fā)明公開的結(jié)構(gòu)圖和/或框圖和/或流圖的框或多個(gè)框中指定的方案。
[0099]本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進(jìn)一步地,具有本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進(jìn)一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。
[0100]以上所述僅是本發(fā)明的部分實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種用戶界面和進(jìn)度條的顯示方法,其特征在于,包括: 將進(jìn)度條庫文件加載到主線程中,并由所述主線程顯示用戶界面; 檢測(cè)到耗時(shí)任務(wù)時(shí),創(chuàng)建工作線程執(zhí)行所述耗時(shí)任務(wù); 由所述工作線程調(diào)用所述進(jìn)度條庫文件,對(duì)所述耗時(shí)任務(wù)的進(jìn)度條進(jìn)行更新顯示。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述調(diào)用所述進(jìn)度條庫文件,對(duì)所述耗時(shí)任務(wù)的進(jìn)度條進(jìn)行更新顯示,具體包括: 由所述工作線程確定出所述耗時(shí)任務(wù)的進(jìn)度值; 調(diào)用所述進(jìn)度條庫文件中涉及進(jìn)度條的接口函數(shù),根據(jù)所述進(jìn)度值,在進(jìn)度條界面中更新顯示所述耗時(shí)任務(wù)的進(jìn)度條。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述確定出所述耗時(shí)任務(wù)的進(jìn)度值之前,還包括: 由所述工作線程調(diào)用所述進(jìn)度條庫文件中的涉及進(jìn)度條的接口函數(shù),根據(jù)預(yù)設(shè)的初始進(jìn)度值,在進(jìn)度條界面中顯示所述進(jìn)度條。4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,還包括:接收到針對(duì)所述進(jìn)度條界面的操作后,根據(jù)該操作對(duì)所述進(jìn)度條界面進(jìn)行更新顯示。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述進(jìn)度條庫文件具體為靜態(tài)庫文件或動(dòng)態(tài)庫文件。6.一種用戶界面和進(jìn)度條的顯示裝置,其特征在于,包括: 用戶界面顯示模塊,用于將進(jìn)度條庫文件加載到主線程中,并由所述主線程顯示用戶界面; 耗時(shí)任務(wù)執(zhí)行模塊,用于檢測(cè)到耗時(shí)任務(wù)時(shí),創(chuàng)建工作線程執(zhí)行所述耗時(shí)任務(wù); 進(jìn)度條顯示模塊,用于由所述工作線程調(diào)用所述進(jìn)度條庫文件,對(duì)所述耗時(shí)任務(wù)的進(jìn)度條進(jìn)行更新顯示。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于, 所述進(jìn)度條顯示模塊具體用于由所述工作線程確定出所述耗時(shí)任務(wù)的進(jìn)度值;調(diào)用所述進(jìn)度條庫文件中涉及進(jìn)度條的接口函數(shù),根據(jù)所述進(jìn)度值,在進(jìn)度條界面中更新顯示所述耗時(shí)任務(wù)的進(jìn)度條。8.根據(jù)權(quán)利要求7所述的裝置,其特征在于, 所述進(jìn)度條顯示模塊還用于在確定出所述耗時(shí)任務(wù)的進(jìn)度值之前,由所述工作線程調(diào)用所述進(jìn)度條庫文件中的涉及進(jìn)度條的接口函數(shù),根據(jù)預(yù)設(shè)的初始進(jìn)度值,在進(jìn)度條界面中顯示所述進(jìn)度條。9.根據(jù)權(quán)利要求7或8所述的裝置,其特征在于, 所述進(jìn)度條顯示模塊還用于接收到針對(duì)所述進(jìn)度條界面的操作后,根據(jù)該操作對(duì)所述進(jìn)度條界面進(jìn)行更新顯示。10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述進(jìn)度條庫文件具體為靜態(tài)庫文件或動(dòng)態(tài)庫文件。
【文檔編號(hào)】G06F3/0481GK105955567SQ201610251591
【公開日】2016年9月21日
【申請(qǐng)日】2016年4月21日
【發(fā)明人】任智祥
【申請(qǐng)人】北京元心科技有限公司