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