技術(shù)領(lǐng)域
本發(fā)明涉及信息技術(shù)領(lǐng)域,具體而言,涉及一種應(yīng)用程序控制方法。
背景技術(shù):
目前,在智能電視中存在大量的應(yīng)用程序,各個(gè)應(yīng)用程序之間存在著各種類型的共存、互斥關(guān)系,在基于Linux的TV系統(tǒng)中,缺乏有效的應(yīng)用程序管理機(jī)制,所有應(yīng)用程序都是單任務(wù)獨(dú)占式運(yùn)行,例如當(dāng)應(yīng)用程序A退出時(shí),不能回到啟動(dòng)A時(shí)的UI控制界面,用戶必須重新啟動(dòng)UI控制界面才能選擇啟動(dòng)其他應(yīng)用程序,用戶的操作過程也較為繁瑣。
因此,如何管理應(yīng)用程序,簡(jiǎn)化用戶的操作過程稱為亟待解決的技術(shù)問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題在于,提供一種新的應(yīng)用程序控制方法,能夠增強(qiáng)應(yīng)用程序之間的交互性,簡(jiǎn)化用戶的操作過程。
有鑒于此,根據(jù)本發(fā)明的一個(gè)方面,提供了一種應(yīng)用程序控制方法,包括:建立應(yīng)用程序鏈表,將已啟動(dòng)的應(yīng)用程序加入所述應(yīng)用程序鏈表,其中,所述應(yīng)用程序鏈表中的每一應(yīng)用程序通過其狀態(tài)接口向所述應(yīng)用程序鏈表中的其他應(yīng)用程序廣播本程序的狀態(tài)消息,以及接收來自所述應(yīng)用程序鏈表中的其他應(yīng)用程序的狀態(tài)消息;所述應(yīng)用程序根據(jù)接收到的狀態(tài)消息和程序當(dāng)前運(yùn)行狀態(tài)確定是否改變本程序的運(yùn)行狀態(tài),以實(shí)現(xiàn)焦點(diǎn)切換。
其中,作為從應(yīng)用程序啟動(dòng)入口的主界面應(yīng)用程序和所述從應(yīng)用程序均具有對(duì)應(yīng)的狀態(tài)接口,可接收來自其他應(yīng)用程序的狀態(tài)消息以及廣播本程序的狀態(tài)消息。
在該技術(shù)方案中,創(chuàng)建了一套管理機(jī)制,讓HOMEUI作為主應(yīng)用程序,其他應(yīng)用程序?yàn)閺膽?yīng)用程序,各應(yīng)用程序具有對(duì)應(yīng)的狀態(tài)接口,在應(yīng)用廣播消息機(jī)制之后,各應(yīng)用程序之間通過各自的狀態(tài)接口,能夠獲知其他應(yīng)用程序的狀態(tài),使得應(yīng)用程序之間能夠進(jìn)行交互,也便于管理各應(yīng)用程序。各應(yīng)用程序根據(jù)其他應(yīng)用程序廣播的狀態(tài)消息來確定是否改變本程序的運(yùn)行狀態(tài),從而完成應(yīng)用程序的管理與控制。
在終端運(yùn)行主界面應(yīng)用程序時(shí),可在終端上顯示用戶交互主界面(UI控制界面),在該用戶交互主界面上集成了終端的各類應(yīng)用程序(即從應(yīng)用程序),用戶可在該用戶交互主界面上選擇啟動(dòng)從應(yīng)用程序。各從應(yīng)用程序的運(yùn)行狀態(tài)將影響主界面應(yīng)用程序的運(yùn)行狀態(tài)。由于本發(fā)明中的各應(yīng)用程序能夠向外廣播自己的狀態(tài)信息,因此主界面應(yīng)用程序能夠監(jiān)控各從應(yīng)用程序的運(yùn)行狀態(tài),從而主動(dòng)改變主界面應(yīng)用程序的運(yùn)行狀態(tài),無需用戶主動(dòng)控制主界面應(yīng)用程序的運(yùn)行狀態(tài)。例如當(dāng)從應(yīng)用程序—瀏覽器從前臺(tái)進(jìn)入后臺(tái)時(shí),主界面應(yīng)用程序就自動(dòng)根據(jù)監(jiān)測(cè)到的瀏覽器的狀態(tài)調(diào)整自己的運(yùn)行狀態(tài),從原先的后臺(tái)切換到前臺(tái),無需用戶重新啟動(dòng)UI控制界面,從而減少了用戶的操作步驟,使用戶的操作更加便捷。
附圖說明
圖1是根據(jù)本發(fā)明的實(shí)施例的應(yīng)用程序控制方法的流程圖;
圖2是根據(jù)本發(fā)明的實(shí)施例的應(yīng)用程序鏈表的結(jié)構(gòu)示意圖;
圖3A是根據(jù)本發(fā)明的實(shí)施例的用戶交互主界面的示意圖;
圖3B是根據(jù)本發(fā)明的實(shí)施例的主界面應(yīng)用程序的運(yùn)行狀態(tài)變化示意圖。
具體實(shí)施方式
為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。
在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實(shí)施,因此,本發(fā)明并不限于下面公開的具體實(shí)施例的限制。
圖1是根據(jù)本發(fā)明的實(shí)施例的應(yīng)用程序控制方法的流程圖。
如圖1所示,根據(jù)本發(fā)明的實(shí)施例的應(yīng)用程序控制方法可以包括以下步驟:步驟102,終端中的應(yīng)用程序包括主界面應(yīng)用程序和從應(yīng)用程序,主界面應(yīng)用程序作為各從應(yīng)用程序的啟動(dòng)入口,主界面應(yīng)用程序和每一從應(yīng)用程序均具有對(duì)應(yīng)的狀態(tài)接口,主界面應(yīng)用程序和每一從應(yīng)用程序均通過各自的狀態(tài)接口接收來自其他應(yīng)用程序的狀態(tài)消息以及廣播本程序的狀態(tài)消息;步驟104,終端中的每一應(yīng)用程序根據(jù)接收到的狀態(tài)消息和程序當(dāng)前運(yùn)行狀態(tài)確定是否改變本程序的運(yùn)行狀態(tài),以實(shí)現(xiàn)焦點(diǎn)切換。
其中,每一應(yīng)用程序?qū)?yīng)的狀態(tài)接口均包括暫停狀態(tài)接口、重新運(yùn)行狀態(tài)接口、停止?fàn)顟B(tài)接口、退出狀態(tài)接口,暫停狀態(tài)接口用于接收或廣播暫停狀態(tài)消息,并在應(yīng)用程序暫停時(shí),保存當(dāng)前狀態(tài)信息,重新運(yùn)行狀態(tài)接口用于接收或廣播恢復(fù)運(yùn)行狀態(tài)消息,并在應(yīng)用程序暫停時(shí),保存當(dāng)前運(yùn)行數(shù)據(jù),停止?fàn)顟B(tài)接口用于接收或廣播停止?fàn)顟B(tài)消息,在應(yīng)用程序停止運(yùn)行時(shí),釋放占用資源,退出狀態(tài)接口用于接收或廣播強(qiáng)制退出狀態(tài)消息,強(qiáng)制應(yīng)用程序退出。
在本實(shí)施例中,創(chuàng)建了一套管理機(jī)制,讓HomeUI作為主應(yīng)用程序,其他應(yīng)用程序?yàn)閺膽?yīng)用程序,各應(yīng)用程序具有對(duì)應(yīng)的狀態(tài)接口,在應(yīng)用廣播消息機(jī)制之后,各應(yīng)用程序之間通過各自的狀態(tài)接口,能夠獲知其他應(yīng)用程序的狀態(tài),使得應(yīng)用程序之間能夠進(jìn)行交互,也便于管理各應(yīng)用程序。各應(yīng)用程序根據(jù)其他應(yīng)用程序廣播的狀態(tài)消息來確定是否改變本程序的運(yùn)行狀態(tài),從而完成應(yīng)用程序的管理與控制。
各從應(yīng)用程序的運(yùn)行狀態(tài)將影響主界面應(yīng)用程序的運(yùn)行狀態(tài)。由于本發(fā)明中的各應(yīng)用程序能夠向外廣播自己的狀態(tài)信息,因此主界面應(yīng)用程序能夠監(jiān)控各從應(yīng)用程序的運(yùn)行狀態(tài),從而主動(dòng)改變主界面應(yīng)用程序的運(yùn)行狀態(tài),無需用戶主動(dòng)控制主界面應(yīng)用程序的運(yùn)行狀態(tài)。例如當(dāng)從應(yīng)用程序—瀏覽器從前臺(tái)進(jìn)入后臺(tái)時(shí),主界面應(yīng)用程序就自動(dòng)根據(jù)監(jiān)測(cè)到的瀏覽器的狀態(tài)調(diào)整自己的運(yùn)行狀態(tài),從原先的后臺(tái)切換到前臺(tái),無需用戶重新啟動(dòng)UI控制界面,從而減少了用戶的操作步驟,使用戶的操作更加便捷。
需說明的是,運(yùn)行狀態(tài)包括處于前臺(tái)焦點(diǎn)狀態(tài),以及后臺(tái)狀態(tài)、退出狀態(tài),其中,后臺(tái)狀態(tài)包括暫停狀態(tài)、停止?fàn)顟B(tài)、后臺(tái)運(yùn)行狀態(tài),后臺(tái)運(yùn)行表示應(yīng)用程序處于非焦點(diǎn)狀態(tài),但仍在運(yùn)行當(dāng)中,例如顯示屏顯示瀏覽網(wǎng)頁,播放器雖然處于后臺(tái),但仍在播放音樂,這種運(yùn)行狀態(tài)可稱之為后臺(tái)運(yùn)行狀態(tài)。
在上述技術(shù)方案中,優(yōu)選的,所述主界面應(yīng)用程序還通過其狀態(tài)接口接收基于用戶指令生成的控制消息,并將所述控制消息廣播至每一所述從應(yīng)用程序,所述控制消息中包含程序名稱;所述從應(yīng)用程序接收到所述控制消息后,判斷所述控制消息是否包含本程序的名稱,若包含有本程序的名稱,則響應(yīng)所述控制消息,改變本程序的運(yùn)行狀態(tài),所述控制消息包括啟動(dòng)控制消息、暫停控制消息、重新運(yùn)行控制消息、退出控制消息。
在終端運(yùn)行主界面應(yīng)用程序時(shí),可在終端上顯示用戶交互主界面(UI控制界面),在該用戶交互主界面上集成了終端的各類應(yīng)用程序(即從應(yīng)用程序),用戶可在該用戶交互主界面上選擇啟動(dòng)從應(yīng)用程序。在TV系統(tǒng)中,所有應(yīng)用程序的配置信息都會(huì)存儲(chǔ)在一個(gè)xml配置文件中,里面包含了應(yīng)用程序所在的路徑,當(dāng)從主界面應(yīng)用程序中啟動(dòng)瀏覽器時(shí),主界面應(yīng)用程序就會(huì)向操作系統(tǒng)發(fā)送啟動(dòng)命令,比如在linux系統(tǒng)下是“./path/browser --u www.google.com”。在這種情況下控制消息是主動(dòng)的,就是主動(dòng)啟動(dòng)一個(gè)從應(yīng)用程序。因此主界面應(yīng)用程序除了具有接收以及廣播狀態(tài)消息的功能外,還具有傳播控制消息的功能,而從應(yīng)用程序僅有接收控制消息、其他應(yīng)用程序廣播的狀態(tài)消息以及廣播本程序的狀態(tài)消息的功能。
在上述任一技術(shù)方案中,優(yōu)選的,在所述從應(yīng)用程序先后接收到多個(gè)具有不同內(nèi)容的控制消息時(shí),所述從應(yīng)用程序按照先后順序處理所接收到的多個(gè)不同的控制消息。
在一些場(chǎng)景下,從應(yīng)用程序可能會(huì)連續(xù)接收到不同的控制消息,例如先接收到重新運(yùn)行的控制消息,又接收到暫停的控制消息,從應(yīng)用程序會(huì)根據(jù)先后順序先響應(yīng)重新運(yùn)行的控制消息,接著響應(yīng)暫停的控制消息。
在上述技術(shù)方案中,優(yōu)選的,建立應(yīng)用程序鏈表,將已啟動(dòng)的應(yīng)用程序加入所述應(yīng)用程序鏈表;所述應(yīng)用程序鏈表中的每一應(yīng)用程序通過其狀態(tài)接口向所述應(yīng)用程序鏈表中的其他應(yīng)用程序廣播本程序的狀態(tài)消息以及接收來自所述應(yīng)用程序鏈表中的其他應(yīng)用程序的狀態(tài)消息。
為了便于監(jiān)控各應(yīng)用程序的狀態(tài),可以建立應(yīng)用程序鏈表,將已啟動(dòng)的應(yīng)用程序加入應(yīng)用程序鏈表中,在應(yīng)用程序鏈表中的各應(yīng)用程序能夠相互廣播自己的狀態(tài)消息。在應(yīng)用程序鏈表中的應(yīng)用程序監(jiān)測(cè)到其他應(yīng)用程序的狀態(tài)消息時(shí),可根據(jù)該其他應(yīng)用程序的狀態(tài)消息來改變自己的運(yùn)行狀態(tài)。即當(dāng)有新的從應(yīng)用程序啟動(dòng)時(shí),當(dāng)前前臺(tái)的從應(yīng)用程序自動(dòng)切換至后臺(tái),若當(dāng)前前臺(tái)沒有運(yùn)行從應(yīng)用程序,則主界面應(yīng)用程序自動(dòng)切換至后臺(tái),無需設(shè)計(jì)專門的消息轉(zhuǎn)發(fā)機(jī)制,也無需用戶做任何操作。
在上述任一技術(shù)方案中,優(yōu)選的,在有新的從應(yīng)用程序啟動(dòng)時(shí),向所述應(yīng)用程序鏈表中的各應(yīng)用程序廣播啟動(dòng)狀態(tài)消息;在處于前臺(tái)焦點(diǎn)狀態(tài)的應(yīng)用程序接收到所述啟動(dòng)狀態(tài)消息時(shí),從前臺(tái)切換至后臺(tái)。
在有新的從應(yīng)用程序啟動(dòng)時(shí),向應(yīng)用程序鏈表中的應(yīng)用程序廣播啟動(dòng)狀態(tài)消息,應(yīng)用程序鏈表中的應(yīng)用程序有的可能處于前臺(tái)焦點(diǎn)狀態(tài),有的可能在后臺(tái),處于前臺(tái)焦點(diǎn)狀態(tài)的應(yīng)用程序在知道有新的應(yīng)用程序啟動(dòng)時(shí),則自動(dòng)將自己切換到后臺(tái),無需用戶手動(dòng)進(jìn)行切換,減少了用戶的操作。
在上述任一技術(shù)方案中,優(yōu)選的,在所述主界面應(yīng)用程序接收到連續(xù)的多個(gè)從應(yīng)用程序的啟動(dòng)狀態(tài)消息時(shí),所述主界面應(yīng)用程序向所述連續(xù)的多個(gè)從應(yīng)用程序中,除最新啟動(dòng)的從應(yīng)用程序之外的其他從應(yīng)用程序,發(fā)送暫停狀態(tài)消息;所述除最新啟動(dòng)的從應(yīng)用程序之外的其他從應(yīng)用程序在接收到所述暫停狀態(tài)消息之后,將本程序切換為暫停狀態(tài)。
在TV系統(tǒng)運(yùn)行過程中,HomeUI可能會(huì)連續(xù)收到不同應(yīng)用程序A和B發(fā)來的消息,此時(shí),HomeUI就需要判斷這些消息,例如A要啟動(dòng),B也要啟動(dòng),由于不能同時(shí)顯示A和B,這時(shí)HomeUI就需要向A發(fā)送pause命令,使B處于顯示狀態(tài)。
在上述任一技術(shù)方案中,優(yōu)選的,在所述應(yīng)用程序鏈表中的任一從應(yīng)用程序退出或隱藏時(shí),廣播退出狀態(tài)消息;在處于后臺(tái)狀態(tài)的主界面應(yīng)用程序或其他從應(yīng)用程序在接收到所述退出狀態(tài)消息后,根據(jù)各自的啟動(dòng)記錄確定是否從后臺(tái)切換至前臺(tái),其中所述啟動(dòng)記錄記錄應(yīng)用程序之間的啟動(dòng)順序關(guān)系。
在另一種場(chǎng)景中,在應(yīng)用程序鏈表中的應(yīng)用程序由于用戶的操作而退出或隱藏時(shí),其也向應(yīng)用程序鏈表中的其他應(yīng)用程序廣播其退出的狀態(tài)消息,主界面應(yīng)用程序和其他已啟動(dòng)的從應(yīng)用程序需根據(jù)之前的啟動(dòng)記錄來確定自己是否需要顯示在前臺(tái),處于焦點(diǎn)狀態(tài),同樣不需要用戶做任何動(dòng)作就能夠完成焦點(diǎn)切換。
在上述任一技術(shù)方案中,優(yōu)選的,在所述主界面應(yīng)用程序或所述其他從應(yīng)用程序根據(jù)各自的啟動(dòng)記錄,確定退出或隱藏的從應(yīng)用程序由本程序啟動(dòng)時(shí),所述主界面應(yīng)用程序或所述其他從應(yīng)用程序從后臺(tái)切換至前臺(tái)。
只有處于焦點(diǎn)的應(yīng)用程序才能響應(yīng)遙控器事件。例如主界面應(yīng)用程序?yàn)镃,當(dāng)前從應(yīng)用程序B在后臺(tái)運(yùn)行,從應(yīng)用程序A處于焦點(diǎn)狀態(tài)。當(dāng)用戶要求A關(guān)閉時(shí),按Exit按鍵退出A,此時(shí)A在退出之前會(huì)廣播A-stoped消息,然后A就退出應(yīng)用程序鏈表了。此時(shí)只有B、C可以接收到A的退出消息。B、C接收到A退出的狀態(tài)消息后,根據(jù)啟動(dòng)記錄來確定是否改變自己的運(yùn)行狀態(tài),此時(shí)分為兩種情況:
1.假設(shè) C啟動(dòng)了A,那么在A退出時(shí)自然就返回到了C,C處于前臺(tái)焦點(diǎn)狀態(tài);
2.假設(shè)C啟動(dòng)了B,B啟動(dòng)了A,B在啟動(dòng)A時(shí),會(huì)在自己的進(jìn)程空間中記錄了啟動(dòng)A的標(biāo)志,A退出,B就會(huì)重新顯示;C會(huì)在自己的程序中記錄當(dāng)前應(yīng)用程序的啟動(dòng)列表,例如C啟動(dòng)了B,B啟動(dòng)了A,它的內(nèi)存中就會(huì)記錄[B,A]。當(dāng)收到A的退出消息時(shí),C會(huì)知道B應(yīng)該處于顯示狀態(tài),于是C不需要顯示自己。這樣,就能夠避免應(yīng)用程序之間的響應(yīng)混亂,也減少了用戶的操作。
根據(jù)本發(fā)明的應(yīng)用程序控制方法,不需要設(shè)計(jì)單獨(dú)的消息轉(zhuǎn)發(fā)模塊,應(yīng)用程序狀態(tài)消息以廣播形式發(fā)出,每一個(gè)應(yīng)用程序都可以收到該消息并且判斷是否需要處理該消息??梢苑奖愕墓芾硐到y(tǒng)中應(yīng)用程序的運(yùn)行狀態(tài),針對(duì)不同狀態(tài)控制應(yīng)用程序的顯示與隱藏,以此為基礎(chǔ)實(shí)現(xiàn)界面友好的應(yīng)用程序控制系統(tǒng),對(duì)于用戶來說,操作更加便捷,使用更加人性化。
下面結(jié)合圖2和圖3進(jìn)行一步說明根據(jù)本發(fā)明的應(yīng)用程序控制方法。
如圖2所示,創(chuàng)建一個(gè)應(yīng)用程序鏈表,將系統(tǒng)中所有應(yīng)用程序添加到該應(yīng)用程序鏈表中,每一個(gè)應(yīng)用程序都可以向應(yīng)用程序鏈表中的應(yīng)用程序組廣播應(yīng)用程序狀態(tài)消息;每一個(gè)應(yīng)用程序都可以獲取該消息,判斷是否需要處理該消息。由于使用了雙向鏈表結(jié)構(gòu),因此鏈表中的節(jié)點(diǎn)可以快速的插入和刪除,也就是說可以快速的注冊(cè)應(yīng)用程序,也可以快速的刪除應(yīng)用程序,在查找應(yīng)用程序時(shí),也可以進(jìn)行前后雙向快速遍歷查找。
在圖2中,當(dāng)前,該應(yīng)用程序鏈表中有四個(gè)應(yīng)用應(yīng)用程序,每個(gè)應(yīng)用程序可向其他應(yīng)用程序廣播本程序的運(yùn)行狀態(tài)的消息以及接收其他應(yīng)用程序廣播的消息,是否響應(yīng)接收到的消息,在于該消息中是否包含本程序的名稱。
圖2所示的應(yīng)用程序鏈表封裝了不同軟件系統(tǒng)的消息處理機(jī)制(例如基于芯片廠商開發(fā)的軟件平臺(tái)系統(tǒng),這些軟件系統(tǒng)中可能會(huì)對(duì)應(yīng)用程序的運(yùn)行做一些消息管理,但因平臺(tái)差異不相互通用),然后建立應(yīng)用程序的Shutdown、stop、pause、resume狀態(tài)控制接口,各接口定義如下描述,應(yīng)用程序通過該接口,可以向系統(tǒng)發(fā)送對(duì)應(yīng)的狀態(tài)消息,也可以收到其他應(yīng)用程序發(fā)送來的狀態(tài)消息。同時(shí)利用這些消息接口,可將應(yīng)用程序的管理做閉環(huán)處理,不受芯片廠商軟件平臺(tái)系統(tǒng)的消息影響,實(shí)現(xiàn)一個(gè)相對(duì)獨(dú)立的應(yīng)用程序管理和控制機(jī)制。
狀態(tài)控制接口如下:
Pause狀態(tài)控制接口:應(yīng)用程序需要暫停時(shí),做一些狀態(tài)保存動(dòng)作,當(dāng)Resume的時(shí)候可以繼續(xù)Pause之前的狀態(tài);
Resume狀態(tài)控制接口:當(dāng)應(yīng)用程序暫停后,會(huì)保存一些運(yùn)行時(shí)的數(shù)據(jù)信息,當(dāng)需要重新運(yùn)行時(shí),在Resume接口動(dòng)作中可以重新恢復(fù)這些運(yùn)行是數(shù)據(jù);
Stop狀態(tài)控制接口:應(yīng)用程序要停止運(yùn)行時(shí),在這個(gè)接口動(dòng)作中,可以保存一些運(yùn)行時(shí)數(shù)據(jù),以及釋放占用的系統(tǒng)資源;
Shutdown狀態(tài)控制接口:強(qiáng)制應(yīng)用程序退出。
如圖2所示,通過鏈表結(jié)構(gòu),將所有應(yīng)用程序鏈接成應(yīng)用程序隊(duì)列。當(dāng)應(yīng)用程序啟動(dòng)時(shí),將應(yīng)用程序注冊(cè)到該鏈表隊(duì)列中,從而實(shí)現(xiàn)應(yīng)用程序的狀態(tài)消息可以在該隊(duì)列中進(jìn)行廣播。應(yīng)用程序1可以理解為鏈表的頭,應(yīng)用程序4可以理解為鏈表的尾,當(dāng)有應(yīng)用程序2退出時(shí),應(yīng)用程序1的下一個(gè)應(yīng)用就會(huì)變成應(yīng)用程序3,應(yīng)用程序3的前一個(gè)就會(huì)變成應(yīng)用程序1;當(dāng)有應(yīng)用程序5啟動(dòng)時(shí),應(yīng)用程序4的下一個(gè)應(yīng)用就會(huì)變成應(yīng)用程序5,應(yīng)用程序1的前一個(gè)應(yīng)用就會(huì)變成應(yīng)用程序5。
應(yīng)用程序鏈表中的任一應(yīng)用程序通過其狀態(tài)接口可向應(yīng)用程序鏈表中的其他應(yīng)用程序廣播本程序的狀態(tài)消息或接收來自其他應(yīng)用程序的廣播消息,形成了消息廣播機(jī)制。利用上面應(yīng)用程序鏈表中的消息廣播機(jī)制,通過UI工具設(shè)計(jì)一個(gè)GUI應(yīng)用程序(即主界面應(yīng)用程序)來統(tǒng)一組織顯示系統(tǒng)中的其他應(yīng)用程序(即從應(yīng)用程序),并且通過判斷消息狀態(tài),實(shí)現(xiàn)對(duì)其他應(yīng)用程序的焦點(diǎn)控制。
舉例說明,在應(yīng)用程序A正在運(yùn)行時(shí),應(yīng)用程序B被啟動(dòng),應(yīng)用程序B被加入應(yīng)用程序鏈表中,應(yīng)用程序B向應(yīng)用程序鏈表中的其他應(yīng)用程序廣播了B-Started消息,應(yīng)用程序A收到該消息后,判斷出其不能與應(yīng)用程序B同時(shí)顯示,于是A就隱藏或者退出本程序,并向應(yīng)用程序鏈表廣播退出消息。
又例如,主界面應(yīng)用程序A正在運(yùn)行,在接收到用戶的操作指令后需要啟動(dòng)應(yīng)用程序B,于是主界面應(yīng)用程序A向應(yīng)用程序鏈表中的應(yīng)用程序廣播start B的消息,如果應(yīng)用程序B已在應(yīng)用程序鏈表中,則應(yīng)用程序B在接收到該消息后,發(fā)現(xiàn)消息有中本程序的名稱,立即響應(yīng)該消息。應(yīng)用程序B就被顯示出來。同時(shí)應(yīng)用程序B向外廣播B-started消息,此時(shí)如果主界面應(yīng)用程序A接收到該B-started消息后,判斷不能其與應(yīng)用程序B同時(shí)顯示,則應(yīng)用程序A就會(huì)隱藏或者退出本程序。
由于用戶的操作,將處于焦點(diǎn)狀態(tài)的B被關(guān)閉時(shí),B向外廣播退出消息,已啟動(dòng)的應(yīng)用程序在接收到該退出消息后,根據(jù)記錄的啟動(dòng)順序判斷是否要顯示本程序。
假設(shè)A啟動(dòng)C,C啟動(dòng)B,則當(dāng)C接收到B的退出消息之后,根據(jù)啟動(dòng)記錄知道應(yīng)該顯示自己,于是將C切換至前臺(tái)焦點(diǎn)狀態(tài),A雖然也能夠收到B的退出消息,但由于A啟動(dòng)C,因此知道自己不能切換至前臺(tái)焦點(diǎn)狀態(tài),這樣就能夠避免A與C之間的切換沖突。如圖3A所示,302是主界面應(yīng)用程序,該應(yīng)用程序需要有交互化的UI,即電視機(jī)中的HomeUI,作為其他應(yīng)用程序(稱之為從應(yīng)用程序)的啟動(dòng)入口。該其他應(yīng)用程序即如304所示的應(yīng)用程序(包括播放器、瀏覽器、電子書和詞典)。用戶可在HomeUI進(jìn)行選擇啟動(dòng)從應(yīng)用程序,在啟動(dòng)瀏覽器時(shí),主界面應(yīng)用程序根據(jù)配置文件的程序路徑,廣播啟動(dòng)瀏覽器的消息,瀏覽器在接收到該啟動(dòng)消息后啟動(dòng)。
如圖3B所示,主界面應(yīng)用程序(HomeUI)300上有兩個(gè)從應(yīng)用程序,分別是應(yīng)用程序A和應(yīng)用程序B,當(dāng)用戶利用遙控器在HomeUI上選擇啟動(dòng)應(yīng)用程序A時(shí),主界面應(yīng)用程序向外廣播啟動(dòng)應(yīng)用程序A的消息并隱藏本程序,應(yīng)用程序A接收到該消息之后,判斷該消息中包括自己的名稱,因此響應(yīng)該消息,進(jìn)入前臺(tái)被顯示,并向外廣播其顯示消息(其他應(yīng)用程序例如應(yīng)用程序B也能接收到該消息,但由于該消息與應(yīng)用程序B不相關(guān),因此應(yīng)用程序B沒有響應(yīng)該消息)。主界面應(yīng)用程序300接收到該消息之后,判斷其不能與應(yīng)用程序A同時(shí)顯示,于是隱藏本程序。當(dāng)應(yīng)用程序A退出時(shí),其也向外廣播其退出消息,主界面應(yīng)用程序300接收到該消息之后,顯示本程序,主界面應(yīng)用程序300處于前端的焦點(diǎn)狀態(tài),可以響應(yīng)遙控器等控制設(shè)備的指令,與用戶進(jìn)行交互。
若在應(yīng)用程序A退出時(shí),應(yīng)用程序B處于后臺(tái)暫停狀態(tài),則當(dāng)應(yīng)用程序B接收到應(yīng)用程序A退出的消息時(shí),顯示本程序,并向外廣播其顯示的消息,主界面應(yīng)用程序300在接收到應(yīng)用程序B顯示的消息時(shí),判斷其不能與應(yīng)用程序B同時(shí)顯示,于是主界面應(yīng)用程序300繼續(xù)運(yùn)行在后臺(tái)等待其他應(yīng)用程序的消息。
因此,主界面應(yīng)用程序可以啟動(dòng)其他應(yīng)用程序,然后將自己隱藏,并且當(dāng)主界面應(yīng)用程序收到其他應(yīng)用程序的stop消息后,又可以將自己顯示。這樣就保證了從HomeUI啟動(dòng)的應(yīng)用程序退出后,電視又可以返回到HomeUI上,減少了用戶的操作步驟,提升了用戶體驗(yàn)。
需說明的是,在本發(fā)明中,當(dāng)應(yīng)用程序A處于前臺(tái)運(yùn)行狀態(tài)時(shí),它只需要關(guān)心是否收到了pause、stop和shutdown這些控制消息,在設(shè)計(jì)TV系統(tǒng)時(shí),不會(huì)有多個(gè)應(yīng)用程序同時(shí)向同一個(gè)應(yīng)用程序發(fā)送兩種不同的控制消息,并且消息接收有先后順序,先收到的消息會(huì)被先處理。
本發(fā)明還提供了應(yīng)用上述任一實(shí)施例中所述描述的應(yīng)用程序控制方法的終端,該終端可以是基于LINUX系統(tǒng)的電視機(jī)。
以上結(jié)合附圖詳細(xì)說明了根據(jù)本發(fā)明的應(yīng)用程序管理和控制方案,考慮到在基于Linux的TV系統(tǒng)中,沒有相應(yīng)的應(yīng)用程序管理機(jī)制,所有應(yīng)用程序都是單任務(wù)獨(dú)占式運(yùn)行,各應(yīng)用程序之間的交互性差,同時(shí)LINUX系統(tǒng)本身具有的廣播消息也僅限于一些系統(tǒng)消息。應(yīng)用程序之間缺乏交互,用戶操作較為繁瑣,因此本發(fā)明設(shè)計(jì)了一種通用的應(yīng)用程序控制方法,每個(gè)應(yīng)用程序具有相應(yīng)的狀態(tài)接口,應(yīng)用程序之間可通過狀態(tài)接口進(jìn)行消息接收和廣播,實(shí)現(xiàn)應(yīng)用程序之間的消息交互,各應(yīng)用程序根據(jù)其他應(yīng)用程序廣播的狀態(tài)消息來確定是否改變本程序的運(yùn)行狀態(tài),從而完成應(yīng)用程序的管理與控制,從而免去了用戶繁瑣的操作,提升了用戶體驗(yàn)。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。