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

一種應(yīng)用程序無(wú)響應(yīng)處理方法及終端與流程

文檔序號(hào):12063411閱讀:263來(lái)源:國(guó)知局
一種應(yīng)用程序無(wú)響應(yīng)處理方法及終端與流程

本發(fā)明涉及應(yīng)用程序處理領(lǐng)域,更具體地說(shuō),涉及一種應(yīng)用程序無(wú)響應(yīng)處理方法及終端。



背景技術(shù):

隨著智能終端的快速發(fā)展,安裝在終端上的應(yīng)用程序所實(shí)現(xiàn)的功能越來(lái)越完善,相應(yīng)的,這些應(yīng)用程序本身的結(jié)構(gòu)也越來(lái)越復(fù)雜,因此運(yùn)行起來(lái)也更加耗費(fèi)系統(tǒng)資源,這就導(dǎo)致終端經(jīng)常會(huì)出現(xiàn)應(yīng)用程序無(wú)響應(yīng)(Application Not Responding,簡(jiǎn)稱ANR)的情況。

當(dāng)前,在系統(tǒng)框架中設(shè)置有一種ANR機(jī)制,當(dāng)某一應(yīng)用程序的執(zhí)行任務(wù)在一定時(shí)間內(nèi)沒(méi)有響應(yīng),將彈出提示框,指引用戶結(jié)束該任務(wù)或繼續(xù)等待。然而一個(gè)流暢的合理的應(yīng)用程序中不應(yīng)出現(xiàn)ANR提示框,讓用戶每次都要處理這個(gè)ANR提示框。為了避免這種情況出現(xiàn),系統(tǒng)會(huì)新建一個(gè)任務(wù)執(zhí)行線程去執(zhí)行較為復(fù)雜、耗時(shí)較長(zhǎng)的任務(wù),在完成一個(gè)較為復(fù)雜、耗時(shí)較長(zhǎng)的任務(wù)后,系統(tǒng)會(huì)銷毀執(zhí)行該任務(wù)的任務(wù)執(zhí)行線程。但是這樣會(huì)導(dǎo)致線程頻繁地被創(chuàng)建和銷毀,增加系統(tǒng)開(kāi)銷和程序復(fù)雜度,從而增加開(kāi)發(fā)和維護(hù)成本。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明要解決的技術(shù)問(wèn)題在于:當(dāng)前系統(tǒng)框架中設(shè)置的ANR機(jī)制中,系統(tǒng)會(huì)頻繁地創(chuàng)建和銷毀任務(wù)執(zhí)行線程,導(dǎo)致系統(tǒng)開(kāi)銷和程序復(fù)雜度增大,并增加系統(tǒng)開(kāi)發(fā)和維護(hù)成本。針對(duì)該技術(shù)問(wèn)題,提供一種應(yīng)用程序無(wú)響應(yīng)處理方法及終端。

為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種程序無(wú)響應(yīng)處理方法,所述程序無(wú)響應(yīng)處理方法包括:

在應(yīng)用程序啟動(dòng)時(shí)為所述應(yīng)用程序創(chuàng)建用戶交互線程,并為所述用戶交互線程創(chuàng)建任務(wù)執(zhí)行線程;

在所述用戶交互線程中,將收到的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給所述任務(wù)執(zhí)行線程;

在所述任務(wù)執(zhí)行線程中,對(duì)接收到的任務(wù)消息中的待執(zhí)行任務(wù)進(jìn)行任務(wù)處理;

在所述應(yīng)用程序退出時(shí),結(jié)束所述用戶交互線程及任務(wù)執(zhí)行線程。

進(jìn)一步地,在所述用戶交互線程中,將收到的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給所述任務(wù)執(zhí)行線程之前,還包括:

判斷執(zhí)行所述待執(zhí)行任務(wù)所需的時(shí)間是否大于等于預(yù)設(shè)時(shí)間閾值,如否,則在所述用戶交互線程中對(duì)該待執(zhí)行任務(wù)進(jìn)行處理;否則,對(duì)所述的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給所述任務(wù)執(zhí)行線程;

所述預(yù)設(shè)時(shí)間閾值大于等于應(yīng)用程序無(wú)響應(yīng)時(shí)間閾值。

進(jìn)一步地,將收到的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給所述任務(wù)執(zhí)行線程包括:

判斷所述待執(zhí)行任務(wù)是否包含執(zhí)行體,如是,從所述待執(zhí)行任務(wù)中獲取待執(zhí)行體、任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù)打包成任務(wù)消息發(fā)給所述任務(wù)執(zhí)行線程;

否則,直接從所述待執(zhí)行任務(wù)中獲取任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù)打包成任務(wù)消息發(fā)給所述任務(wù)執(zhí)行線程。

進(jìn)一步地,在所述任務(wù)執(zhí)行線程中對(duì)所述待執(zhí)行任務(wù)進(jìn)行任務(wù)處理包括:

從所述任務(wù)消息中提取任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù),并判斷所述任務(wù)消息中是否包含執(zhí)行體,如是,生成所述執(zhí)行體對(duì)所述待執(zhí)行數(shù)據(jù)進(jìn)行執(zhí)行;否則,根據(jù)所述任務(wù)標(biāo)識(shí)和預(yù)設(shè)的任務(wù)標(biāo)識(shí)與預(yù)置執(zhí)行體對(duì)應(yīng)關(guān)系,提取對(duì)應(yīng)的預(yù)置執(zhí)行體對(duì)所述待執(zhí)行數(shù)據(jù)進(jìn)行執(zhí)行。

進(jìn)一步地,所述應(yīng)用程序無(wú)響應(yīng)處理方法還包括:

在所述任務(wù)執(zhí)行線程中對(duì)所述待執(zhí)行任務(wù)進(jìn)行任務(wù)處理后,將得到的任務(wù)執(zhí)行結(jié)果存儲(chǔ)于任務(wù)結(jié)果數(shù)據(jù)池中,并向所述用戶交互線程反饋至少包含任務(wù)標(biāo)識(shí)的任務(wù)處理完成消息;

在所述用戶交互線程中,根據(jù)所述任務(wù)處理完成消息中的任務(wù)標(biāo)識(shí)從所述任務(wù)結(jié)果數(shù)據(jù)池中提取對(duì)應(yīng)的任務(wù)處理結(jié)果。

進(jìn)一步地,本發(fā)明提供了一種終端,所述終端包括:

線程創(chuàng)建模塊,用于在應(yīng)用程序啟動(dòng)時(shí)為所述應(yīng)用程序創(chuàng)建用戶交互線程,并為所述用戶交互線程創(chuàng)建任務(wù)執(zhí)行線程;

用戶交互主控模塊,用于在所述用戶交互線程中,將收到的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給所述任務(wù)執(zhí)行線程;

執(zhí)行主控模塊,用于在所述任務(wù)執(zhí)行線程中,對(duì)接收到的任務(wù)消息中的待執(zhí)行任務(wù)進(jìn)行任務(wù)處理;

線程結(jié)束模塊,用于在所述應(yīng)用程序退出時(shí),結(jié)束所述用戶交互線程及任務(wù)執(zhí)行線程。

進(jìn)一步地,所述用戶交互主控模塊用于在所述用戶交互線程中創(chuàng)建任務(wù)隊(duì)列、用戶交互消息管理器以及用戶交互消息處理器;

所述任務(wù)隊(duì)列用于存儲(chǔ)待執(zhí)行任務(wù);

所述用戶交互消息管理器用于判斷執(zhí)行所述任務(wù)隊(duì)列中的待執(zhí)行任務(wù)所需消耗的時(shí)間是否大于等于預(yù)設(shè)時(shí)間閾值,如否,將所述待執(zhí)行任務(wù)發(fā)給所述用戶交互消息處理器進(jìn)行處理;否則,對(duì)所述的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給所述任務(wù)執(zhí)行線程;

所述預(yù)設(shè)時(shí)間閾值大于等于應(yīng)用程序無(wú)響應(yīng)時(shí)間閾值。

進(jìn)一步地,所述用戶交互消息管理器用于判斷所述待執(zhí)行任務(wù)是否包含執(zhí)行體,如是,從所述待執(zhí)行任務(wù)中獲取待執(zhí)行體、任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù)打包成任務(wù)消息發(fā)給所述任務(wù)執(zhí)行線程,否則,直接從所述待執(zhí)行任務(wù)中獲取任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù)打包成任務(wù)消息發(fā)給所述任務(wù)執(zhí)行線程。

進(jìn)一步地,所述執(zhí)行主控模塊用于在所述任務(wù)執(zhí)行線程創(chuàng)建待執(zhí)行消息隊(duì)列以及執(zhí)行消息處理器;

所述待執(zhí)行消息隊(duì)列用于存儲(chǔ)接收到的任務(wù)消息,并下發(fā)給所述執(zhí)行消息處理器;

所述執(zhí)行消息處理器用于從接收到的任務(wù)消息中提取任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù),并判斷所述任務(wù)消息中是否包含執(zhí)行體,如是,生成所述執(zhí)行體對(duì)所述待執(zhí)行數(shù)據(jù)進(jìn)行執(zhí)行;否則,根據(jù)所述任務(wù)標(biāo)識(shí)和預(yù)設(shè)的任務(wù)標(biāo)識(shí)與預(yù)置執(zhí)行體對(duì)應(yīng)關(guān)系,提取對(duì)應(yīng)的預(yù)置執(zhí)行體對(duì)所述待執(zhí)行數(shù)據(jù)進(jìn)行執(zhí)行。

進(jìn)一步地,所述執(zhí)行主控模塊還用于在所述任務(wù)執(zhí)行線程創(chuàng)建執(zhí)行消息管理器;

所述執(zhí)行消息處理器還用于在對(duì)所述待執(zhí)行任務(wù)進(jìn)行任務(wù)處理后,將得到的任務(wù)執(zhí)行結(jié)果存儲(chǔ)于任務(wù)結(jié)果數(shù)據(jù)池中,并通過(guò)所述執(zhí)行消息管理器向所述用戶交互線程反饋至少包含任務(wù)標(biāo)識(shí)的任務(wù)處理完成消息;

所述用戶交互主控模塊還用于在所述用戶交互線程中創(chuàng)建用于存儲(chǔ)任務(wù)處理完成消息的用戶交互消息隊(duì)列;

所述用戶交互消息處理器還用于根據(jù)所述任務(wù)處理完成消息中的任務(wù)標(biāo)識(shí)從所述任務(wù)結(jié)果數(shù)據(jù)池中提取對(duì)應(yīng)的任務(wù)處理結(jié)果。

有益效果

本發(fā)明提供的應(yīng)用程序無(wú)響應(yīng)處理方法及終端,通過(guò)在應(yīng)用程序啟動(dòng)時(shí)為就為該應(yīng)用程序創(chuàng)建用戶交互線程,并為該用戶交互線程創(chuàng)建任務(wù)執(zhí)行線程;在用戶交互線程中,將收到的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程,使待執(zhí)行任務(wù)在任務(wù)執(zhí)行線程中進(jìn)行任務(wù)處理;并在應(yīng)用程序退出時(shí),結(jié)束用戶交互線程及任務(wù)執(zhí)行線程。這樣在任務(wù)執(zhí)行線程中完成應(yīng)用程序的一個(gè)待執(zhí)行任務(wù)執(zhí)行后,不會(huì)對(duì)任務(wù)執(zhí)行線程銷毀,而是可以繼續(xù)用于執(zhí)行應(yīng)用程序的其他待執(zhí)行任務(wù),避免了任務(wù)執(zhí)行線程的頻繁創(chuàng)建,減少了系統(tǒng)開(kāi)銷,降低了程序復(fù)雜度,減少了維護(hù)成本。

附圖說(shuō)明

下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,附圖中:

圖1為實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例一個(gè)可選的移動(dòng)終端的硬件結(jié)構(gòu)示意圖;

圖2為本發(fā)明第一實(shí)施例提供的應(yīng)用程序無(wú)響應(yīng)處理方法流程示意圖;

圖3為本發(fā)明第一實(shí)施例提供的對(duì)待執(zhí)行任務(wù)的判斷處理流程示意圖;

圖4為本發(fā)明第一實(shí)施例提供的將收到的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程具體流程示意圖;

圖5為本發(fā)明第一實(shí)施例提供的對(duì)待執(zhí)行任務(wù)進(jìn)行任務(wù)處理的具體流程;

圖6為本發(fā)明第二實(shí)施例提供的用戶交互線程與任務(wù)執(zhí)行線程之間的處理流程示意圖;

圖7為本發(fā)明第三實(shí)施例提供的一種終端結(jié)構(gòu)示意圖;

圖8為本發(fā)明第三實(shí)施例提供的一種用戶交互線程結(jié)構(gòu)示意圖;

圖9為本發(fā)明第三實(shí)施例提供的一種任務(wù)執(zhí)行線程結(jié)構(gòu)示意圖;

圖10為本發(fā)明第四實(shí)施例提供的終端結(jié)構(gòu)框架圖。

具體實(shí)施方式

應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

現(xiàn)在將參考附圖描述實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的移動(dòng)終端。在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說(shuō)明,其本身并沒(méi)有特定的意義。因此,"模塊"與"部件"可以混合地使用。

移動(dòng)終端可以以各種形式來(lái)實(shí)施。例如,本發(fā)明中描述的終端可以包括諸如移動(dòng)電話、智能電話、筆記本電腦、數(shù)字廣播接收器、PDA(個(gè)人數(shù)字助理)、PAD(平板電腦)、PMP(便攜式多媒體播放器)、導(dǎo)航裝置等等的移動(dòng)終端以及諸如數(shù)字TV、臺(tái)式計(jì)算機(jī)等等的固定終端。下面,假設(shè)終端是移動(dòng)終端,然而,本領(lǐng)域技術(shù)人員將理解的是,除了特別用于移動(dòng)目的的元件之外,根據(jù)本發(fā)明的實(shí)施方式的構(gòu)造也能夠應(yīng)用于固定類型的終端。

圖1為實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例一個(gè)可選的移動(dòng)終端的硬件結(jié)構(gòu)示意圖。

移動(dòng)終端100可以包括無(wú)線通信單元110、A/V(音頻/視頻)輸入單元120、用戶輸入單元130、感測(cè)單元140、輸出單元150、存儲(chǔ)器160、接口單元170、控制器180和電源單元190等等。圖1示出了具有各種組件的移動(dòng)終端,但是應(yīng)理解的是,并不要求實(shí)施所有示出的組件,可以替代地實(shí)施更多或更少的組件,將在下面詳細(xì)描述移動(dòng)終端的元件。

無(wú)線通信單元110通常包括一個(gè)或多個(gè)組件,其允許移動(dòng)終端100與無(wú)線通信系統(tǒng)或網(wǎng)絡(luò)之間的無(wú)線電通信。A/V輸入單元120用于接收音頻或視頻信號(hào)。

用戶輸入單元130可以根據(jù)用戶輸入的命令生成鍵輸入數(shù)據(jù)以控制移動(dòng)終端的各種操作。用戶輸入單元130允許用戶輸入各種類型的信息,并且可以包括鍵盤、鍋?zhàn)衅?、觸摸板(例如,檢測(cè)由于被接觸而導(dǎo)致的電阻、壓力、電容等等的變化的觸敏組件)、滾輪、搖桿等等。

感測(cè)單元140檢測(cè)移動(dòng)終端100的當(dāng)前狀態(tài),(例如,移動(dòng)終端100的打開(kāi)或關(guān)閉狀態(tài))、移動(dòng)終端100的位置、用戶對(duì)于移動(dòng)終端100的接觸(即,觸摸輸入)的有無(wú)、移動(dòng)終端100的取向、移動(dòng)終端100的加速或減速移動(dòng)和方向等等,并且生成用于控制移動(dòng)終端100的操作的命令或信號(hào)。例如,當(dāng)移動(dòng)終端100實(shí)施為滑動(dòng)型移動(dòng)電話時(shí),感測(cè)單元140可以感測(cè)該滑動(dòng)型電話是打開(kāi)還是關(guān)閉。另外,感測(cè)單元140能夠檢測(cè)電源單元190是否提供電力或者接口單元170是否與外部裝置耦接。

接口單元170用作至少一個(gè)外部裝置與移動(dòng)終端100連接可以通過(guò)的接口。例如,外部裝置可以包括有線或無(wú)線頭戴式耳機(jī)端口、外部電源(或電池充電器)端口、有線或無(wú)線數(shù)據(jù)端口、存儲(chǔ)卡端口、用于連接具有識(shí)別模塊的裝置的端口、音頻輸入/輸出(I/O)端口、視頻I/O端口、耳機(jī)端口等等。接口單元170可以用于接收來(lái)自外部裝置的輸入(例如,數(shù)據(jù)信息、電力等等)并且將接收到的輸入傳輸?shù)揭苿?dòng)終端100內(nèi)的一個(gè)或多個(gè)元件或者可以用于在移動(dòng)終端和外部裝置之間傳輸數(shù)據(jù)。

另外,當(dāng)移動(dòng)終端100與外部底座連接時(shí),接口單元170可以用作允許通過(guò)其將電力從底座提供到移動(dòng)終端100的路徑或者可以用作允許從底座輸入的各種命令信號(hào)通過(guò)其傳輸?shù)揭苿?dòng)終端的路徑。從底座輸入的各種命令信號(hào)或電力可以用作用于識(shí)別移動(dòng)終端是否準(zhǔn)確地安裝在底座上的信號(hào)。輸出單元150被構(gòu)造為以視覺(jué)、音頻和/或觸覺(jué)方式提供輸出信號(hào)(例如,音頻信號(hào)、視頻信號(hào)、警報(bào)信號(hào)、振動(dòng)信號(hào)等等)。

存儲(chǔ)器160可以存儲(chǔ)由控制器180執(zhí)行的處理和控制操作的軟件程序等等,或者可以暫時(shí)地存儲(chǔ)己經(jīng)輸出或?qū)⒁敵龅臄?shù)據(jù)(例如,電話簿、消息、靜態(tài)圖像、視頻等等)。而且,存儲(chǔ)器160可以存儲(chǔ)關(guān)于當(dāng)觸摸施加到觸摸屏?xí)r輸出的各種方式的振動(dòng)和音頻信號(hào)的數(shù)據(jù)。

存儲(chǔ)器160可以包括至少一種類型的存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)包括閃存、硬盤、多媒體卡、卡型存儲(chǔ)器(例如,SD或DX存儲(chǔ)器等等)、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、靜態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(SRAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、可編程只讀存儲(chǔ)器(PROM)、磁性存儲(chǔ)器、磁盤、光盤等等。而且,移動(dòng)終端100可以與通過(guò)網(wǎng)絡(luò)連接執(zhí)行存儲(chǔ)器160的存儲(chǔ)功能的網(wǎng)絡(luò)存儲(chǔ)裝置協(xié)作。

控制器180通常控制移動(dòng)終端的總體操作。例如,控制器180執(zhí)行與語(yǔ)音通話、數(shù)據(jù)通信、視頻通話等等相關(guān)的控制和處理??刂破?80可以執(zhí)行模式識(shí)別處理,以將在觸摸屏上執(zhí)行的手寫輸入或者圖片繪制輸入識(shí)別為字符或圖像。

電源單元190在控制器180的控制下接收外部電力或內(nèi)部電力并且提供操作各元件和組件所需的適當(dāng)?shù)碾娏Α?/p>

這里描述的各種實(shí)施方式可以以使用例如計(jì)算機(jī)軟件、硬件或其任何組合的計(jì)算機(jī)可讀介質(zhì)來(lái)實(shí)施。對(duì)于硬件實(shí)施,這里描述的實(shí)施方式可以通過(guò)使用特定用途集成電路(ASIC)、數(shù)字信號(hào)處理器(DSP)、數(shù)字信號(hào)處理裝置(DSPD)、可編程邏輯裝置(PLD)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、處理器、控制器、微控制器、微處理器、被設(shè)計(jì)為執(zhí)行這里描述的功能的電子單元中的至少一種來(lái)實(shí)施,在一些情況下,這樣的實(shí)施方式可以在控制器180中實(shí)施。對(duì)于軟件實(shí)施,諸如過(guò)程或功能的實(shí)施方式可以與允許執(zhí)行至少一種功能或操作的單獨(dú)的軟件模塊來(lái)實(shí)施。軟件代碼可以由以任何適當(dāng)?shù)木幊陶Z(yǔ)言編寫的軟件應(yīng)用程序(或程序)來(lái)實(shí)施,軟件代碼可以存儲(chǔ)在存儲(chǔ)器160中并且由控制器180執(zhí)行。

至此,己經(jīng)按照其功能描述了移動(dòng)終端。下面,為了簡(jiǎn)要起見(jiàn),將描述諸如折疊型、直板型、擺動(dòng)型、滑動(dòng)型移動(dòng)終端等等的各種類型的移動(dòng)終端中的滑動(dòng)型移動(dòng)終端作為示例。因此,本發(fā)明能夠應(yīng)用于任何類型的移動(dòng)終端,并且不限于滑動(dòng)型移動(dòng)終端。

以下通過(guò)具體實(shí)施例進(jìn)行詳細(xì)說(shuō)明。

第一實(shí)施例

為減少系統(tǒng)開(kāi)銷,降低維護(hù)成本,本實(shí)施例提供了一種應(yīng)用程序無(wú)響應(yīng)處理方法,參照?qǐng)D2,圖2為本發(fā)明第一實(shí)施例提供的應(yīng)用程序無(wú)響應(yīng)處理方法流程示意圖,包括:

S201:在應(yīng)用程序啟動(dòng)時(shí)為該應(yīng)用程序創(chuàng)建用戶交互線程;

S202:為該用戶交互線程創(chuàng)建任務(wù)執(zhí)行線程;

S203:在用戶交互線程中,將收到的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程;

S204:在任務(wù)執(zhí)行線程中,對(duì)接收到的任務(wù)消息中的待執(zhí)行任務(wù)進(jìn)行任務(wù)處理;

S205:判斷該應(yīng)用程序是否退出,若是,轉(zhuǎn)至S206;否則,轉(zhuǎn)至S203。

S206:結(jié)束用戶交互線程及任務(wù)執(zhí)行線程。

本實(shí)施例中,為用戶交互線程創(chuàng)建的任務(wù)執(zhí)行線程可以是一個(gè),此時(shí)當(dāng)任務(wù)執(zhí)行線程中的前一個(gè)待執(zhí)行任務(wù)進(jìn)行任務(wù)處理完畢之后,在任務(wù)執(zhí)行線程中才會(huì)處理下一個(gè)從用戶交互線程中發(fā)送來(lái)的待執(zhí)行任務(wù)。為用戶交互線程創(chuàng)建的任務(wù)執(zhí)行線程也可以是多個(gè),此時(shí)可以在多個(gè)任務(wù)執(zhí)行線程中并行執(zhí)行待執(zhí)行任務(wù),值得注意的是,在每一個(gè)任務(wù)執(zhí)行線程中,只有在處理完畢前一個(gè)待執(zhí)行任務(wù)之后,才會(huì)處理下一個(gè)用戶交互線程發(fā)送來(lái)的待執(zhí)行任務(wù)。例如,系統(tǒng)為用戶交互線程創(chuàng)建了2個(gè)任務(wù)執(zhí)行線程,則在同一時(shí)刻可以同時(shí)進(jìn)行2個(gè)待執(zhí)行任務(wù)的任務(wù)處理,在每一個(gè)任務(wù)執(zhí)行線程中分別處理一個(gè)待執(zhí)行任務(wù)。

應(yīng)當(dāng)理解的是,任務(wù)執(zhí)行線程可以在同一時(shí)段內(nèi)接收多個(gè)任務(wù)消息,此時(shí)在任務(wù)執(zhí)行線程中,可以根據(jù)接收到任務(wù)消息的先后順序依次對(duì)任務(wù)消息中的待執(zhí)行任務(wù)進(jìn)行任務(wù)處理;任務(wù)執(zhí)行線程也可以一次只接收一個(gè)任務(wù)消息,當(dāng)前一個(gè)接收到的任務(wù)消息中的待執(zhí)行任務(wù)在任務(wù)執(zhí)行線程中進(jìn)行任務(wù)處理完畢之后,再接收下一個(gè)任務(wù)消息。

本實(shí)施例中可以預(yù)先設(shè)置時(shí)間閾值,在用戶交互線程中,將收到的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程之前,可以根據(jù)預(yù)設(shè)時(shí)間閾值對(duì)待執(zhí)行任務(wù)進(jìn)行判斷,從而決定是否發(fā)送至任務(wù)執(zhí)行線程中進(jìn)行處理,在用戶交互線程中的具體判斷處理過(guò)程參照?qǐng)D3所示,包括:

S301:判斷執(zhí)行待執(zhí)行任務(wù)所需的時(shí)間是否大于等于預(yù)設(shè)時(shí)間閾值,如否,轉(zhuǎn)至S302;否則,進(jìn)行S303的操作。

S302:在用戶交互線程中對(duì)該待執(zhí)行任務(wù)進(jìn)行處理。

S303:將待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程。

值得注意的是,本實(shí)施例中預(yù)設(shè)時(shí)間閾值應(yīng)當(dāng)大于等于應(yīng)用程序無(wú)響應(yīng)時(shí)間閾值。應(yīng)用程序無(wú)響應(yīng)時(shí)間閾值可以是根據(jù)執(zhí)行應(yīng)用程序某一待執(zhí)行任務(wù)的最長(zhǎng)執(zhí)行時(shí)間來(lái)確定的,也可以是根據(jù)經(jīng)驗(yàn)值來(lái)進(jìn)行設(shè)置。例如,我們知道,在默認(rèn)情況下,在android(安卓)中Activity的最長(zhǎng)執(zhí)行時(shí)間是5秒,Broadcast Receiver(廣播接收器)的最長(zhǎng)執(zhí)行時(shí)間則是10秒,故而可以設(shè)置應(yīng)用程序無(wú)響應(yīng)時(shí)間閾值為5秒或10秒,則相應(yīng)的設(shè)置預(yù)設(shè)時(shí)間閾值大于等于5秒或者10秒。

具體的,例如,以預(yù)設(shè)時(shí)間閾值為5秒為例,在用戶交互線程創(chuàng)建后,接收到第一個(gè)待執(zhí)行任務(wù)A,判斷出執(zhí)行待執(zhí)行任務(wù)A的所需時(shí)間小于5秒,則在用戶交互線程中直接對(duì)待執(zhí)行任務(wù)A進(jìn)行任務(wù)處理;用戶交互線程在接收到第一個(gè)待執(zhí)行任務(wù)A之后,又接收到一個(gè)待執(zhí)行任務(wù)B,判斷出執(zhí)行待執(zhí)行任務(wù)B的所需時(shí)間大于5秒,則在用戶交互線程中,將待執(zhí)行任務(wù)B打包成任務(wù)消息發(fā)到任務(wù)執(zhí)行線程中進(jìn)行任務(wù)處理。

又例如,在將待執(zhí)行任務(wù)B打包成任務(wù)消息發(fā)到任務(wù)執(zhí)行線程中之后,用戶交互線程又收到一個(gè)待執(zhí)行任務(wù)C,判斷出執(zhí)行待執(zhí)行任務(wù)C的所需時(shí)間也大于5秒,若系統(tǒng)創(chuàng)建的任務(wù)執(zhí)行線程只有一個(gè),且此時(shí)任務(wù)執(zhí)行線程中仍在處理待執(zhí)行任務(wù)B,則在用戶交互線程中,可以等待任務(wù)執(zhí)行線程中待執(zhí)行任務(wù)B處理完畢之后,再將待執(zhí)行任務(wù)C打包成任務(wù)消息發(fā)到該任務(wù)執(zhí)行線程中進(jìn)行任務(wù)處理;若系統(tǒng)創(chuàng)建的任務(wù)執(zhí)行線程有多個(gè),則在用戶交互線程中,可以將待執(zhí)行任務(wù)C打包成任務(wù)消息發(fā)到其余空閑的任務(wù)執(zhí)行線程中進(jìn)行任務(wù)處理。

本實(shí)施例中,待執(zhí)行任務(wù)至少包含任務(wù)標(biāo)識(shí)和待執(zhí)行數(shù)據(jù),同時(shí)還可以包含有執(zhí)行體。應(yīng)當(dāng)理解的是執(zhí)行體用于在用戶交互線程或任務(wù)執(zhí)行線程中處理數(shù)據(jù)。

本實(shí)施例中,步驟S203中將收到的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程具體流程參見(jiàn)圖4,包括:

S401:判斷待執(zhí)行任務(wù)是否包含執(zhí)行體,若是,轉(zhuǎn)至S402,否則,轉(zhuǎn)至S403;

S402:從待執(zhí)行任務(wù)中獲取待執(zhí)行體、任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程。

S403:直接從待執(zhí)行任務(wù)中獲取任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程。

本實(shí)施例中,步驟S204在任務(wù)執(zhí)行線程中對(duì)待執(zhí)行任務(wù)進(jìn)行任務(wù)處理的具體流程參見(jiàn)圖5,包括:

S501:從任務(wù)消息中提取任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù);

S502:判斷任務(wù)消息中是否包含執(zhí)行體,若是,轉(zhuǎn)至S503,否則,轉(zhuǎn)至S504;

S503:生成執(zhí)行體對(duì)待執(zhí)行數(shù)據(jù)進(jìn)行執(zhí)行。

S504:根據(jù)任務(wù)標(biāo)識(shí)和預(yù)設(shè)的任務(wù)標(biāo)識(shí)與預(yù)置執(zhí)行體對(duì)應(yīng)關(guān)系,提取對(duì)應(yīng)的預(yù)置執(zhí)行體對(duì)待執(zhí)行數(shù)據(jù)進(jìn)行執(zhí)行。

應(yīng)當(dāng)理解的是,步驟S504中,預(yù)設(shè)的任務(wù)標(biāo)識(shí)與預(yù)置執(zhí)行體對(duì)應(yīng)關(guān)系是預(yù)先在系統(tǒng)中設(shè)置好的,其對(duì)應(yīng)關(guān)系可以是通過(guò)圖表等形式進(jìn)行存儲(chǔ)。

具體的,在任務(wù)消息不存在執(zhí)行體的情況下,根據(jù)任務(wù)標(biāo)識(shí)與預(yù)設(shè)的任務(wù)標(biāo)識(shí)進(jìn)行匹配,當(dāng)從任務(wù)消息中提取到的任務(wù)標(biāo)識(shí)與某一預(yù)設(shè)的任務(wù)標(biāo)識(shí)匹配時(shí),根據(jù)預(yù)設(shè)的任務(wù)標(biāo)識(shí)與預(yù)置執(zhí)行體對(duì)應(yīng)關(guān)系,提取對(duì)應(yīng)的預(yù)置執(zhí)行體作為該任務(wù)消息的執(zhí)行體,對(duì)待執(zhí)行數(shù)據(jù)進(jìn)行執(zhí)行。

本實(shí)施例中,可以在用戶交互線程和任務(wù)執(zhí)行線程之外設(shè)置任務(wù)結(jié)果數(shù)據(jù)池,用于存儲(chǔ)各待執(zhí)行任務(wù)的任務(wù)執(zhí)行結(jié)果。

在任務(wù)執(zhí)行線程中對(duì)待執(zhí)行任務(wù)進(jìn)行任務(wù)處理后,可以將得到的任務(wù)執(zhí)行結(jié)果存儲(chǔ)于任務(wù)結(jié)果數(shù)據(jù)池中,同時(shí)還可以向用戶交互線程反饋至少包含任務(wù)標(biāo)識(shí)的任務(wù)處理完成消息。

在用戶交互線程中,在得到任務(wù)處理完成消息后,可以根據(jù)任務(wù)處理完成消息中的任務(wù)標(biāo)識(shí)從任務(wù)結(jié)果數(shù)據(jù)池中提取對(duì)應(yīng)的任務(wù)處理結(jié)果。

應(yīng)當(dāng)理解的是,在根據(jù)任務(wù)處理完成消息中的任務(wù)標(biāo)識(shí)從任務(wù)結(jié)果數(shù)據(jù)池中提取出對(duì)應(yīng)的任務(wù)處理結(jié)果后,可以將任務(wù)處理結(jié)果反饋到顯示界面以告知用戶,當(dāng)然也可以不反饋。

本實(shí)施例提供的應(yīng)用程序無(wú)響應(yīng)處理方法,可以應(yīng)用于如圖1所示的終端上,前述各方法步驟具體可以通過(guò)圖1中的控制器實(shí)現(xiàn),任務(wù)結(jié)果數(shù)據(jù)池可以設(shè)置于圖1中的存儲(chǔ)器內(nèi),以存儲(chǔ)任務(wù)處理結(jié)果。

本實(shí)施例提供的應(yīng)用程序無(wú)響應(yīng)處理方法,通過(guò)在應(yīng)用程序啟動(dòng)時(shí)為就為該應(yīng)用程序創(chuàng)建用戶交互線程,并為該用戶交互線程創(chuàng)建任務(wù)執(zhí)行線程;在用戶交互線程中,將收到的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程,使待執(zhí)行任務(wù)在任務(wù)執(zhí)行線程中進(jìn)行任務(wù)處理;并在應(yīng)用程序退出時(shí),結(jié)束用戶交互線程及任務(wù)執(zhí)行線程。這樣在任務(wù)執(zhí)行線程中完成應(yīng)用程序的一個(gè)待執(zhí)行任務(wù)執(zhí)行后,不會(huì)對(duì)任務(wù)執(zhí)行線程銷毀,而是可以繼續(xù)用于執(zhí)行應(yīng)用程序的其他待執(zhí)行任務(wù),避免了任務(wù)執(zhí)行線程的頻繁創(chuàng)建,減少了系統(tǒng)開(kāi)銷,降低了程序復(fù)雜度,減少了維護(hù)成本。

第二實(shí)施例

本實(shí)施例在第一實(shí)施例的基礎(chǔ)上,以只具有一個(gè)任務(wù)執(zhí)行線程的處理流程為例,對(duì)本發(fā)明提供的應(yīng)用程序無(wú)響應(yīng)處理方法作進(jìn)一步示例說(shuō)明。

本實(shí)施例中,在應(yīng)用程序啟動(dòng)時(shí),為該應(yīng)用程序創(chuàng)建用戶交互線程,并為該用戶交互線程創(chuàng)建一個(gè)任務(wù)執(zhí)行線程。之后,參照?qǐng)D6,圖6為本發(fā)明第二實(shí)施例提供的用戶交互線程與任務(wù)執(zhí)行線程之間的處理流程示意圖。

從圖6中可見(jiàn),待執(zhí)行任務(wù)首先在用戶交互線程中進(jìn)行操作,包括:

S601:判斷執(zhí)行待執(zhí)行任務(wù)所需的時(shí)間是否大于等于預(yù)設(shè)時(shí)間閾值,若否,轉(zhuǎn)至S601,否則,轉(zhuǎn)至S603;

S602:對(duì)該待執(zhí)行任務(wù)進(jìn)行處理。

S603:判斷待執(zhí)行任務(wù)是否包含執(zhí)行體,若是,進(jìn)行S604操作,否則,進(jìn)行S605操作。

S604:從待執(zhí)行任務(wù)中獲取待執(zhí)行體、任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程。

S605:從待執(zhí)行任務(wù)中獲取待執(zhí)行體、任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程。

對(duì)于轉(zhuǎn)至任務(wù)執(zhí)行線程的待執(zhí)行任務(wù),在任務(wù)執(zhí)行線程中的操作包括:

S606:從任務(wù)消息中提取任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù);

S607:判斷任務(wù)消息中是否包含執(zhí)行體,若是,轉(zhuǎn)至S608,否則,轉(zhuǎn)至S609;

S608:生成執(zhí)行體對(duì)待執(zhí)行數(shù)據(jù)進(jìn)行執(zhí)行;

S609:根據(jù)任務(wù)標(biāo)識(shí)和預(yù)設(shè)的任務(wù)標(biāo)識(shí)與預(yù)置執(zhí)行體對(duì)應(yīng)關(guān)系,提取對(duì)應(yīng)的預(yù)置執(zhí)行體對(duì)待執(zhí)行數(shù)據(jù)進(jìn)行執(zhí)行;

S610:將任務(wù)處理結(jié)果存入任務(wù)結(jié)果數(shù)據(jù)池中。

此時(shí),在用戶交互線程側(cè),會(huì)進(jìn)行步驟S611:從任務(wù)結(jié)果數(shù)據(jù)池中提取出任務(wù)處理結(jié)果。

應(yīng)當(dāng)理解的是,在執(zhí)行完步驟S611之后,會(huì)判斷該應(yīng)用程序是否退出,當(dāng)應(yīng)用程序退出后,相應(yīng)的用戶交互線程結(jié)束,同時(shí)可以發(fā)送結(jié)束消息給任務(wù)執(zhí)行線程,任務(wù)執(zhí)行線程根據(jù)結(jié)束消息釋放線程中的數(shù)據(jù)信息,并結(jié)束線程。若應(yīng)用程序未退出,則相應(yīng)的用戶交互線程會(huì)繼續(xù)接收應(yīng)用程序下發(fā)的待執(zhí)行任務(wù),并重復(fù)上述處理流程。

還應(yīng)當(dāng)理解的是,本實(shí)施例僅示例了存在一個(gè)任務(wù)執(zhí)行線程的情況,當(dāng)存在多個(gè)任務(wù)執(zhí)行線程時(shí),每一個(gè)任務(wù)執(zhí)行線程與用戶交互線程之間的處理流程均可參照上述示例流程進(jìn)行。

本實(shí)施例提供的應(yīng)用程序無(wú)響應(yīng)處理方法,通過(guò)在應(yīng)用程序啟動(dòng)時(shí)為該應(yīng)用程序創(chuàng)建用戶交互線程,并為該用戶交互線程創(chuàng)建任務(wù)執(zhí)行線程;在用戶交互線程中,將執(zhí)行時(shí)間大于等于預(yù)設(shè)時(shí)間閾值的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程,使待執(zhí)行任務(wù)在任務(wù)執(zhí)行線程中進(jìn)行任務(wù)處理;并將任務(wù)處理結(jié)果存儲(chǔ)于任務(wù)結(jié)果數(shù)據(jù)池中,供用戶交互線程側(cè)提取,避免了在任務(wù)執(zhí)行線程中完成應(yīng)用程序的一個(gè)待執(zhí)行任務(wù)執(zhí)行后就對(duì)任務(wù)執(zhí)行線程銷毀的情況的出現(xiàn),實(shí)現(xiàn)了任務(wù)執(zhí)行線程的高利用率,避免了任務(wù)執(zhí)行線程的頻繁創(chuàng)建,減少了系統(tǒng)開(kāi)銷,降低了程序復(fù)雜度,減少了維護(hù)成本。

第三實(shí)施例

為避免現(xiàn)有終端在處理耗時(shí)較長(zhǎng)的任務(wù)時(shí),需要頻繁創(chuàng)建和銷毀任務(wù)執(zhí)行線程,導(dǎo)致終端系統(tǒng)開(kāi)銷和程序復(fù)雜度大,維護(hù)成本高的問(wèn)題,本實(shí)施例提供了一種新的終端,參照?qǐng)D7,圖7為本發(fā)明第三實(shí)施例提供的一種終端結(jié)構(gòu)示意圖,包括:

線程創(chuàng)建模塊71,用于在應(yīng)用程序啟動(dòng)時(shí)為該應(yīng)用程序創(chuàng)建用戶交互線程,并為該用戶交互線程創(chuàng)建任務(wù)執(zhí)行線程。

本實(shí)施例中,線程創(chuàng)建模塊71為用戶交互線程創(chuàng)建的任務(wù)執(zhí)行線程可以是一個(gè),也可以是多個(gè)。

用戶交互主控模塊72,用于在用戶交互線程中,將收到的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程。

本實(shí)施例中,用戶交互主控模塊72可以在收到待執(zhí)行任務(wù)后,即將收到的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程,即此時(shí)可以向一個(gè)任務(wù)執(zhí)行線程發(fā)送多個(gè)任務(wù)消息,任務(wù)消息可以在任務(wù)執(zhí)行線程中存留;也可以在判定任務(wù)執(zhí)行線程空閑時(shí),將收到的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程,即當(dāng)一個(gè)任務(wù)執(zhí)行線程中,正在處理待執(zhí)行任務(wù)時(shí),不向該任務(wù)執(zhí)行線程發(fā)送任務(wù)消息,當(dāng)一個(gè)任務(wù)執(zhí)行線程未處理待執(zhí)行任務(wù)時(shí),再向其發(fā)送一個(gè)任務(wù)消息。

執(zhí)行主控模塊73,用于在任務(wù)執(zhí)行線程中,對(duì)接收到的任務(wù)消息中的待執(zhí)行任務(wù)進(jìn)行任務(wù)處理。

本實(shí)施例中,當(dāng)線程創(chuàng)建模塊71為用戶交互線程創(chuàng)建的任務(wù)執(zhí)行線程為一個(gè)時(shí),執(zhí)行主控模塊73在任務(wù)執(zhí)行線程中的前一個(gè)待執(zhí)行任務(wù)進(jìn)行任務(wù)處理完畢之后,才會(huì)處理下一個(gè)用戶交互主控模塊72發(fā)送來(lái)的待執(zhí)行任務(wù)。

當(dāng)線程創(chuàng)建模塊71為用戶交互線程創(chuàng)建的任務(wù)執(zhí)行線程為多個(gè)時(shí),執(zhí)行主控模塊73可以在多個(gè)任務(wù)執(zhí)行線程中并行執(zhí)行用戶交互主控模塊72發(fā)送來(lái)的多個(gè)待執(zhí)行任務(wù)。值得注意的是,執(zhí)行主控模塊73在每一個(gè)任務(wù)執(zhí)行線程中,只有在處理完畢該任務(wù)執(zhí)行線程中的前一個(gè)待執(zhí)行任務(wù)之后,才會(huì)在該任務(wù)執(zhí)行線程中處理下一個(gè)用戶交互主控模塊72發(fā)送來(lái)的待執(zhí)行任務(wù)。

例如,線程創(chuàng)建模塊71為用戶交互線程創(chuàng)建了2個(gè)任務(wù)執(zhí)行線程,用戶交互主控模塊72在同一時(shí)間段內(nèi)向任務(wù)執(zhí)行線程發(fā)送了2個(gè)包含待執(zhí)行任務(wù)的任務(wù)消息,則執(zhí)行主控模塊73可以分別在2個(gè)任務(wù)執(zhí)行線程中同時(shí)對(duì)2個(gè)待執(zhí)行任務(wù)進(jìn)行任務(wù)處理,當(dāng)在其中一個(gè)任務(wù)執(zhí)行線程中的待執(zhí)行任務(wù)處理完畢之后,用戶交互主控模塊72再向任務(wù)執(zhí)行線程中發(fā)送一個(gè)包含待執(zhí)行任務(wù)的任務(wù)消息,執(zhí)行主控模塊73在該任務(wù)執(zhí)行線程中對(duì)用戶交互主控模塊72新發(fā)送的任務(wù)消息中的待執(zhí)行任務(wù)進(jìn)行處理。

又例如,用戶交互主控模塊72在同一時(shí)間段內(nèi)向任務(wù)執(zhí)行線程發(fā)送4個(gè)包含待執(zhí)行任務(wù)的任務(wù)消息,其中每個(gè)任務(wù)執(zhí)行線程接收到2個(gè)任務(wù)消息,則執(zhí)行主控模塊73可以分別在2個(gè)任務(wù)執(zhí)行線程中,同時(shí)對(duì)每個(gè)任務(wù)執(zhí)行線程接收到的2個(gè)任務(wù)消息中的一個(gè)的待執(zhí)行任務(wù)進(jìn)行任務(wù)處理,在每個(gè)任務(wù)執(zhí)行線程中處理完前一個(gè)待執(zhí)行任務(wù)后,再繼續(xù)處理每個(gè)任務(wù)執(zhí)行線程中接收到的另一個(gè)任務(wù)消息。應(yīng)當(dāng)理解的是,本示例中,各任務(wù)執(zhí)行線程之間可以存在任務(wù)調(diào)配機(jī)制,比如在一個(gè)任務(wù)執(zhí)行線程中,用戶交互主控模塊72已完成了該任務(wù)執(zhí)行線程接收到的兩個(gè)待執(zhí)行任務(wù),而在另一個(gè)任務(wù)執(zhí)行線程中,并未完成第一個(gè)待執(zhí)行任務(wù)的處理,此時(shí)用戶交互主控模塊72可以將另一個(gè)任務(wù)執(zhí)行線程中的剩余一個(gè)待執(zhí)行任務(wù)調(diào)配至已完成所有待執(zhí)行任務(wù)的任務(wù)執(zhí)行線程中處理,從而進(jìn)一步的提高各任務(wù)執(zhí)行線程的利用率。

線程結(jié)束模塊74,用于在應(yīng)用程序退出時(shí),結(jié)束用戶交互線程及任務(wù)執(zhí)行線程。

具體的,在應(yīng)用程序退出時(shí),線程結(jié)束模塊74可以向用戶交互線程和任務(wù)執(zhí)行線程發(fā)送結(jié)束消息,用戶交互線程和任務(wù)執(zhí)行線程根據(jù)結(jié)束消息釋放線程中的數(shù)據(jù)信息,并結(jié)束線程。

本實(shí)施例中,用戶交互主控模塊72還用于在用戶交互線程中創(chuàng)建任務(wù)隊(duì)列721、用戶交互消息管理器722以及用戶交互消息處理器723,參見(jiàn)圖8,其中:

任務(wù)隊(duì)列721用于存儲(chǔ)待執(zhí)行任務(wù)。

用戶交互消息管理器722用于判斷執(zhí)行任務(wù)隊(duì)列721中的待執(zhí)行任務(wù)所需消耗的時(shí)間是否大于等于預(yù)設(shè)時(shí)間閾值,如否,將待執(zhí)行任務(wù)發(fā)給用戶交互消息處理器723進(jìn)行處理;否則,將待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程。

值得注意的是,本實(shí)施例中預(yù)設(shè)時(shí)間閾值應(yīng)當(dāng)大于等于應(yīng)用程序無(wú)響應(yīng)時(shí)間閾值。應(yīng)用程序無(wú)響應(yīng)時(shí)間閾值可以是根據(jù)執(zhí)行應(yīng)用程序某一待執(zhí)行任務(wù)的最長(zhǎng)執(zhí)行時(shí)間來(lái)確定的,也可以是根據(jù)經(jīng)驗(yàn)值來(lái)進(jìn)行設(shè)置。例如,可以設(shè)置應(yīng)用程序無(wú)響應(yīng)時(shí)間閾值為5秒或10秒,則相應(yīng)的設(shè)置預(yù)設(shè)時(shí)間閾值大于等于5秒或者10秒。

本實(shí)施例中,待執(zhí)行任務(wù)至少包含任務(wù)標(biāo)識(shí)和待執(zhí)行數(shù)據(jù),同時(shí)還可以包含有執(zhí)行體。應(yīng)當(dāng)理解的是執(zhí)行體用于在用戶交互線程或任務(wù)執(zhí)行線程中處理數(shù)據(jù)。

用戶交互消息管理器722將待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程具體包括:判斷待執(zhí)行任務(wù)是否包含執(zhí)行體,如是,從待執(zhí)行任務(wù)中獲取待執(zhí)行體、任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程,否則,直接從待執(zhí)行任務(wù)中獲取任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程。

本實(shí)施例中,本實(shí)施例中,執(zhí)行主控模塊73還用于在任務(wù)執(zhí)行線程中創(chuàng)建待執(zhí)行消息隊(duì)列731以及執(zhí)行消息處理器732,參見(jiàn)圖9,其中:

待執(zhí)行消息隊(duì)列731用于存儲(chǔ)接收到的任務(wù)消息,并下發(fā)給執(zhí)行消息處理器732;

執(zhí)行消息處理器732用于從接收到的任務(wù)消息中提取任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù),并判斷任務(wù)消息中是否包含執(zhí)行體,如是,生成執(zhí)行體對(duì)待執(zhí)行數(shù)據(jù)進(jìn)行執(zhí)行;否則,根據(jù)任務(wù)標(biāo)識(shí)和預(yù)設(shè)的任務(wù)標(biāo)識(shí)與預(yù)置執(zhí)行體對(duì)應(yīng)關(guān)系,提取對(duì)應(yīng)的預(yù)置執(zhí)行體對(duì)待執(zhí)行數(shù)據(jù)進(jìn)行執(zhí)行。

應(yīng)當(dāng)理解的是,預(yù)設(shè)的任務(wù)標(biāo)識(shí)與預(yù)置執(zhí)行體對(duì)應(yīng)關(guān)系是預(yù)先設(shè)置好的,其對(duì)應(yīng)關(guān)系可以是通過(guò)圖表等形式存儲(chǔ)在終端內(nèi)。

具體的,在執(zhí)行消息處理器732判斷任務(wù)消息不存在執(zhí)行體的情況下,執(zhí)行消息處理器732根據(jù)任務(wù)標(biāo)識(shí)與預(yù)設(shè)的任務(wù)標(biāo)識(shí)進(jìn)行匹配,當(dāng)從任務(wù)消息中提取到的任務(wù)標(biāo)識(shí)與某一預(yù)設(shè)的任務(wù)標(biāo)識(shí)匹配時(shí),再根據(jù)預(yù)設(shè)的任務(wù)標(biāo)識(shí)與預(yù)置執(zhí)行體對(duì)應(yīng)關(guān)系,提取出對(duì)應(yīng)的預(yù)置執(zhí)行體作為該任務(wù)消息的執(zhí)行體,對(duì)待執(zhí)行數(shù)據(jù)進(jìn)行執(zhí)行。

本實(shí)施例提供的終端,其具體結(jié)構(gòu)可以如圖1所示,其中線程創(chuàng)建模塊71、用戶交互主控模塊72、執(zhí)行主控模塊73以及線程結(jié)束模塊74的具體功能可以由圖1中的控制器實(shí)現(xiàn),線程創(chuàng)建模塊71、用戶交互主控模塊72、執(zhí)行主控模塊73以及線程結(jié)束模塊74可以設(shè)置在圖1中的控制器內(nèi)。

本實(shí)施例提供的終端,在應(yīng)用程序啟動(dòng)時(shí)通過(guò)線程創(chuàng)建模塊為該應(yīng)用程序創(chuàng)建用戶交互線程,并為該用戶交互線程創(chuàng)建任務(wù)執(zhí)行線程;并通過(guò)用戶交互主控模塊在用戶交互線程中,將收到的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程,使執(zhí)行主控模塊在任務(wù)執(zhí)行線程中對(duì)待執(zhí)行任務(wù)進(jìn)行任務(wù)處理;并通過(guò)線程結(jié)束模塊,在應(yīng)用程序退出時(shí),結(jié)束用戶交互線程及任務(wù)執(zhí)行線程。這樣在任務(wù)執(zhí)行線程中完成應(yīng)用程序的一個(gè)待執(zhí)行任務(wù)執(zhí)行后,終端不會(huì)對(duì)任務(wù)執(zhí)行線程銷毀,而是繼續(xù)在任務(wù)執(zhí)行線程中執(zhí)行應(yīng)用程序的其他待執(zhí)行任務(wù),避免了任務(wù)執(zhí)行線程的頻繁創(chuàng)建,減少了系統(tǒng)開(kāi)銷,降低了程序復(fù)雜度,減少了維護(hù)成本。

第四實(shí)施例

本實(shí)施例在第三實(shí)施例的基礎(chǔ)上,以只具有一個(gè)任務(wù)執(zhí)行線程的處理流程為例,對(duì)本發(fā)明的方案作進(jìn)一步示例說(shuō)明。

本實(shí)施例中,在應(yīng)用程序啟動(dòng)時(shí),線程創(chuàng)建模塊71為該應(yīng)用程序創(chuàng)建用戶交互線程,并為該用戶交互線程創(chuàng)建一個(gè)任務(wù)執(zhí)行線程。之后,參照?qǐng)D10,圖10為本發(fā)明第四實(shí)施例提供的終端結(jié)構(gòu)框架圖,值得注意的是:

終端還包括的任務(wù)結(jié)果數(shù)據(jù)池75,任務(wù)結(jié)果數(shù)據(jù)池75用于存儲(chǔ)各待執(zhí)行任務(wù)的任務(wù)執(zhí)行結(jié)果。

在任務(wù)執(zhí)行線程中,執(zhí)行主控模塊73除了創(chuàng)建有待執(zhí)行消息隊(duì)列731以及執(zhí)行消息處理器732之外,還創(chuàng)建有執(zhí)行消息管理器733,執(zhí)行消息處理器733用于在對(duì)待執(zhí)行任務(wù)進(jìn)行任務(wù)處理后,將得到的任務(wù)執(zhí)行結(jié)果存儲(chǔ)于任務(wù)結(jié)果數(shù)據(jù)池75中,并通過(guò)執(zhí)行消息管理器733向用戶交互線程反饋至少包含任務(wù)標(biāo)識(shí)的任務(wù)處理完成消息。

在用戶交互線程中,用戶交互主控模塊72除了創(chuàng)建有任務(wù)隊(duì)列721、用戶交互消息管理器722以及用戶交互消息處理器723之外,還創(chuàng)建有用戶交互消息隊(duì)列724,用戶交互消息隊(duì)列724用于存儲(chǔ)任務(wù)處理完成消息。

同時(shí),在用戶交互線程中,用戶交互消息處理器723還用于根據(jù)任務(wù)處理完成消息中的任務(wù)標(biāo)識(shí)從任務(wù)結(jié)果數(shù)據(jù)池75中提取出對(duì)應(yīng)的任務(wù)處理結(jié)果。

應(yīng)當(dāng)理解的是,用戶交互消息處理器723可以從用戶交互消息隊(duì)列724中得到任務(wù)處理完成消息。具體的,用戶交互消息隊(duì)列724可以主動(dòng)告知用戶交互消息處理器723任務(wù)處理完成消息,用戶交互消息隊(duì)列724也可以不告知用戶交互消息處理器723,用戶交互消息處理器723主動(dòng)去用戶交互消息隊(duì)列724查詢。

因此,在線程創(chuàng)建模塊71創(chuàng)建好用戶交互線程和任務(wù)執(zhí)行線程之后,終端處理過(guò)程如下:

S1:任務(wù)隊(duì)列721存儲(chǔ)來(lái)自應(yīng)用程序的待執(zhí)行任務(wù)。

S2:用戶交互消息管理器722對(duì)執(zhí)行任務(wù)隊(duì)列721中的待執(zhí)行任務(wù)所需消耗的時(shí)間進(jìn)行判斷;將所需消耗的時(shí)間大于等于預(yù)設(shè)時(shí)間閾值的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給待執(zhí)行消息隊(duì)列731。

應(yīng)當(dāng)理解的是,用戶交互消息管理器722將所需消耗的時(shí)間小于預(yù)設(shè)時(shí)間閾值的待執(zhí)行任務(wù)發(fā)給用戶交互消息處理器723進(jìn)行處理時(shí),可以直接將待執(zhí)行任務(wù)發(fā)給用戶交互消息處理器723進(jìn)行處理(例如圖10所示),也可以將待執(zhí)行任務(wù)先發(fā)給用戶交互消息隊(duì)列724,再由用戶交互消息處理器723從用戶交互消息隊(duì)列724得到。值得注意的是,將待執(zhí)行任務(wù)先發(fā)給用戶交互消息隊(duì)列724后,用戶交互消息隊(duì)列724可以對(duì)接收到的信息進(jìn)行判斷,區(qū)分出接收到的是已處理的任務(wù)處理完成消息,還是未處理的待執(zhí)行任務(wù),以便于用戶交互消息處理器723得到,其具體方式可以是用戶交互消息隊(duì)列724主動(dòng)將未處理的待執(zhí)行任務(wù)發(fā)給用戶交互消息處理器723,也可以是用戶交互消息處理器723主動(dòng)從用戶交互消息隊(duì)列724中查詢獲取。

還應(yīng)當(dāng)注意的是,用戶交互消息管理器722發(fā)送給待執(zhí)行消息隊(duì)列731的任務(wù)消息至少包含待執(zhí)行任務(wù)的任務(wù)標(biāo)識(shí)以及待執(zhí)行數(shù)據(jù),對(duì)于待執(zhí)行任務(wù)中包含執(zhí)行體的,還應(yīng)在任務(wù)消息中包含待執(zhí)行任務(wù)的執(zhí)行體。

S3:待執(zhí)行消息隊(duì)列731接收并存儲(chǔ)用戶交互消息管理器722發(fā)送的任務(wù)消息,并下發(fā)給執(zhí)行消息處理器732。

S4:執(zhí)行消息處理器732根據(jù)任務(wù)消息中包含的任務(wù)標(biāo)識(shí)、待執(zhí)行數(shù)據(jù)、以及執(zhí)行體(沒(méi)有執(zhí)行體的根據(jù)任務(wù)標(biāo)識(shí)提取預(yù)設(shè)執(zhí)行體)對(duì)待執(zhí)行數(shù)據(jù)進(jìn)行執(zhí)行。

S5:執(zhí)行消息管理器733將得到的任務(wù)執(zhí)行結(jié)果存儲(chǔ)于任務(wù)結(jié)果數(shù)據(jù)池75中,同時(shí)向用戶交互消息隊(duì)列724反饋任務(wù)處理完成消息。

S6:用戶交互消息處理器723根據(jù)任務(wù)處理完成消息中的任務(wù)標(biāo)識(shí)從任務(wù)結(jié)果數(shù)據(jù)池75中提取出對(duì)應(yīng)的任務(wù)處理結(jié)果。

應(yīng)當(dāng)理解的是,用戶交互消息處理器723在根據(jù)任務(wù)處理完成消息中的任務(wù)標(biāo)識(shí)從任務(wù)結(jié)果數(shù)據(jù)池中提取出對(duì)應(yīng)的任務(wù)處理結(jié)果后,可以將任務(wù)處理結(jié)果反饋到顯示界面以告知用戶,當(dāng)然也可以不反饋。用戶交互消息處理器723直接處理的待執(zhí)行任務(wù)得到的任務(wù)處理結(jié)果也可以反饋到顯示界面以告知用戶或不反饋。

本實(shí)施例中,本實(shí)施例提供的終端,其具體結(jié)構(gòu)可以如圖1所示,其中任務(wù)隊(duì)列721、用戶交互消息管理器722、用戶交互消息處理器723、用戶交互消息隊(duì)列724、待執(zhí)行消息隊(duì)列731、執(zhí)行消息處理器732和執(zhí)行消息管理器733的具體功能可以由圖1中的控制器實(shí)現(xiàn),任務(wù)隊(duì)列721、用戶交互消息管理器722、用戶交互消息處理器723、用戶交互消息隊(duì)列724、待執(zhí)行消息隊(duì)列731、執(zhí)行消息處理器732和執(zhí)行消息管理器733可以設(shè)置在圖1中的控制器內(nèi)。任務(wù)結(jié)果數(shù)據(jù)池75可以設(shè)置于圖1中的存儲(chǔ)器內(nèi),以存儲(chǔ)任務(wù)處理結(jié)果。

本實(shí)施例提供的終端,在應(yīng)用程序啟動(dòng)時(shí)通過(guò)線程創(chuàng)建模塊為該應(yīng)用程序創(chuàng)建用戶交互線程,并為該用戶交互線程創(chuàng)建任務(wù)執(zhí)行線程;在用戶交互線程中,用戶交互消息管理器將執(zhí)行時(shí)間大于等于預(yù)設(shè)時(shí)間閾值的待執(zhí)行任務(wù)打包成任務(wù)消息發(fā)給任務(wù)執(zhí)行線程中的待執(zhí)行消息隊(duì)列,使待執(zhí)行任務(wù)在任務(wù)執(zhí)行線程中的執(zhí)行消息處理器進(jìn)行任務(wù)處理;并由執(zhí)行消息管理器將任務(wù)處理結(jié)果存儲(chǔ)于任務(wù)結(jié)果數(shù)據(jù)池中,供用戶交互線程中的用戶交互消息處理器提取,避免了現(xiàn)有終端在任務(wù)執(zhí)行線程中完成應(yīng)用程序的一個(gè)待執(zhí)行任務(wù)執(zhí)行后就對(duì)任務(wù)執(zhí)行線程銷毀的情況的出現(xiàn),提高了任務(wù)執(zhí)行線程的利用率,避免了任務(wù)執(zhí)行線程被頻繁創(chuàng)建,減少了終端系統(tǒng)的開(kāi)銷,降低了程序復(fù)雜度,減少了維護(hù)成本。

需要說(shuō)明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者裝置不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者裝置所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過(guò)程、方法、物品或者裝置中還存在另外的相同要素。

上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。

通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。

上面結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行了描述,但是本發(fā)明并不局限于上述的具體實(shí)施方式,上述的具體實(shí)施方式僅僅是示意性的,而不是限制性的,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不脫離本發(fā)明宗旨和權(quán)利要求所保護(hù)的范圍情況下,還可做出很多形式,這些均屬于本發(fā)明的保護(hù)之內(nèi)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1