亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

應(yīng)用預(yù)加載方法及裝置的制造方法

文檔序號(hào):10593876閱讀:478來源:國知局
應(yīng)用預(yù)加載方法及裝置的制造方法
【專利摘要】本公開提供了一種應(yīng)用預(yù)加載方法及裝置,屬于終端技術(shù)領(lǐng)域。所述方法包括:接收?qǐng)鼍扒袚Q指令,所述場(chǎng)景切換指令用于指示從第一用戶切換活動(dòng)Activity切換至第二Activity;對(duì)所述第一Activity暫停處理;在所述第一Activity的暫停處理過程中,獲取所述第二Activity的預(yù)加載類列表,基于空閑計(jì)算資源,啟動(dòng)至少一個(gè)線程對(duì)所述第二Activity的預(yù)加載類列表中的類進(jìn)行加載;其中,所述第二Activity的預(yù)加載類列表包括至少一個(gè)所述第二Activity在歷史運(yùn)行過程中所使用到的類。本公開通過在場(chǎng)景切換時(shí),在對(duì)切換前的第一Activity進(jìn)行暫停處理時(shí),利用空閑資源,對(duì)切換后的場(chǎng)景所可能使用到的類提前進(jìn)行加載,從而節(jié)約了真正使用這些類時(shí)所需消耗的時(shí)間,提高了應(yīng)用的運(yùn)行速度。
【專利說明】
應(yīng)用預(yù)加載方法及裝置
技術(shù)領(lǐng)域
[0001 ]本公開涉及終端技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用預(yù)加載方法及裝置。
【背景技術(shù)】
[0002]隨著智能終端的發(fā)展,智能終端的功能越來越強(qiáng)大,用戶對(duì)智能終端的性能要求也越來越高。智能終端的性能可以體現(xiàn)在多個(gè)方面,最突出的在于智能終端上所安裝應(yīng)用的運(yùn)行上,例如,使用應(yīng)用時(shí)應(yīng)用界面刷新的幀率,啟動(dòng)應(yīng)用時(shí)的加載速度等等,均已經(jīng)成為衡量智能終端性能的重要方面。因此,亟需一種能夠提高應(yīng)用運(yùn)行速度的應(yīng)用預(yù)加載方法。

【發(fā)明內(nèi)容】

[0003]為了克服相關(guān)技術(shù)中存在的問題,本公開提供一種應(yīng)用預(yù)加載方法及裝置。
[0004]根據(jù)本公開實(shí)施例的第一方面,提供一種應(yīng)用預(yù)加載方法,包括:
[0005]接收?qǐng)鼍扒袚Q指令,所述場(chǎng)景切換指令用于指示從第一用戶切換活動(dòng)Activity切換至第二 Activity;對(duì)所述第一 Acti vity暫停處理;在所述第一 Acti vity的暫停處理過程中,獲取所述第二Activity的預(yù)加載類列表,基于空閑計(jì)算資源,啟動(dòng)至少一個(gè)線程對(duì)所述第二Activity的預(yù)加載類列表中的類進(jìn)行加載;其中,所述第二Activity的預(yù)加載類列表包括至少一個(gè)所述第二 Activity在歷史運(yùn)行過程中所使用到的類。上述技術(shù)方案,通過在場(chǎng)景切換時(shí),在對(duì)切換前的第一 Activity進(jìn)行暫停處理時(shí),利用空閑資源,對(duì)切換后的場(chǎng)景所可能使用到的類提前進(jìn)行加載,這種在暫停處理過程中,采用并行的方式,啟動(dòng)至少一個(gè)線程加載后續(xù)可能會(huì)使用到的類的方式,使得在接下來的運(yùn)行過程中,如果需要使用已預(yù)加載的某個(gè)類,終端如果發(fā)現(xiàn)這個(gè)類已經(jīng)被加載,也即是已經(jīng)初始化,則可以直接跳過這個(gè)類的初始化流程,從而加快了整體執(zhí)行速度,節(jié)約了真正使用這些類時(shí)所需消耗的時(shí)間,提高了應(yīng)用的運(yùn)行速度。
[0006]在第一方面的第一種可能實(shí)現(xiàn)方式中,所述接收?qǐng)鼍扒袚Q指令之前,所述方法還包括:在所述第二Activity的運(yùn)行過程中,記錄所述運(yùn)行過程中所使用到的類,生成所述第二 Activity的預(yù)加載類列表。在實(shí)際運(yùn)行中生成預(yù)加載類列表,可以適應(yīng)于用戶的實(shí)際使用習(xí)慣,提高預(yù)加載的準(zhǔn)確度。
[0007]在第一方面的第二種可能實(shí)現(xiàn)方式中,所述方法還包括:當(dāng)所述第二Activity所屬應(yīng)用的版本更新后,根據(jù)更新版本中所述第二Activity的運(yùn)行過程,重新生成所述第二Acti vity的預(yù)加載類列表。在版本更新時(shí)重新生成預(yù)加載類列表,可以提高預(yù)加載的準(zhǔn)確度。
[0008]在第一方面的第三種可能實(shí)現(xiàn)方式中,所述方法還包括:基于空閑計(jì)算資源,啟動(dòng)至少一個(gè)線程對(duì)所述第二 Activity的預(yù)加載類列表中的類進(jìn)行加載包括:如果所述空閑計(jì)算資源不能滿足所述第二 Activity的預(yù)加載類列表中的類的加載需求,按照各個(gè)類在運(yùn)行過程中的使用先后順序,確定所述第二Activity的預(yù)加載類列表中的目標(biāo)類;啟動(dòng)至少一個(gè)線程對(duì)所述第二 Activity的預(yù)加載類列表中的目標(biāo)類進(jìn)行加載。按照使用先后順序,對(duì)類進(jìn)行加載,提高了預(yù)加載的準(zhǔn)確度,能夠提高應(yīng)用的運(yùn)行速度。
[0009]基于上述任一種可能實(shí)現(xiàn)方式,在第一方面的第三種可能實(shí)現(xiàn)方式中,所述方法還包括:所述第一Activity與所述第二Activity屬于同一個(gè)應(yīng)用程序;或,所述第一Acti vity屬于第一應(yīng)用程序,所述第二 Acti vity屬于第二應(yīng)用程序。該方法可以適用于從一個(gè)應(yīng)用切換至另一個(gè)應(yīng)用的場(chǎng)景,還可以適用于應(yīng)用內(nèi)界面切換的場(chǎng)景。
[0010]根據(jù)本公開實(shí)施例的第二方面,提供一種應(yīng)用預(yù)加載裝置,包括:
[0011]接收模塊,用于接收?qǐng)鼍扒袚Q指令,所述場(chǎng)景切換指令用于指示從第一用戶切換活動(dòng)Activity切換至第二 Activity ;
[0012]暫停模塊,用于對(duì)所述第一Activity暫停處理;
[0013]獲取模塊,用于在所述第一Activity的暫停處理過程中,獲取所述第二Activity的預(yù)加載類列表;
[0014]加載模塊,用于基于空閑計(jì)算資源,啟動(dòng)至少一個(gè)線程對(duì)所述第二Activity的預(yù)加載類列表中的類進(jìn)行加載;
[0015]其中,所述第二Activity的預(yù)加載類列表包括至少一個(gè)所述第二Activity在歷史運(yùn)行過程中所使用到的類。
[0016]上述技術(shù)方案,通過在場(chǎng)景切換時(shí),在對(duì)切換前的第一Activity進(jìn)行暫停處理時(shí),利用空閑資源,對(duì)切換后的場(chǎng)景所可能使用到的類提前進(jìn)行加載,這種在暫停處理過程中,采用并行的方式,啟動(dòng)至少一個(gè)線程加載后續(xù)可能會(huì)使用到的類的方式,使得在接下來的運(yùn)行過程中,如果需要使用已預(yù)加載的某個(gè)類,終端如果發(fā)現(xiàn)這個(gè)類已經(jīng)被加載,也即是已經(jīng)初始化,則可以直接跳過這個(gè)類的初始化流程,從而加快了整體執(zhí)行速度,節(jié)約了真正使用這些類時(shí)所需消耗的時(shí)間,提高了應(yīng)用的運(yùn)行速度。
[0017]在第二方面的第一種可能實(shí)現(xiàn)方式中,所述裝置還包括列表生成模塊,用于在所述第二Activity的運(yùn)行過程中,記錄所述運(yùn)行過程中所使用到的類,生成所述第二Activity的預(yù)加載類列表。
[0018]在第二方面的第二種可能實(shí)現(xiàn)方式中,所述列表生成模塊,還用于當(dāng)所述第二Acti vity所屬應(yīng)用的版本更新后,根據(jù)更新版本中所述第二 Acti vity的運(yùn)行過程,重新生成所述第二 Activity的預(yù)加載類列表。
[0019]在第二方面的第三種可能實(shí)現(xiàn)方式中,所述第二加載模塊用于如果所述空閑計(jì)算資源不能滿足所述第二 Activity的預(yù)加載類列表中的類的加載需求,按照各個(gè)類在運(yùn)行過程中的使用先后順序,確定所述第二Activity的預(yù)加載類列表中的目標(biāo)類;啟動(dòng)至少一個(gè)線程對(duì)所述第二 Activity的預(yù)加載類列表中的目標(biāo)類進(jìn)行加載。
[0020]結(jié)合上述任一種可能實(shí)現(xiàn)方式,在第二方面的第四種可能實(shí)現(xiàn)方式中,所述第一Acti vity與所述第二 Activity屬于同一個(gè)應(yīng)用程序;或,所述第一 Acti vity屬于第一應(yīng)用程序,所述第二 Activity屬于第二應(yīng)用程序。
[0021]根據(jù)本公開實(shí)施例的第三方面,提供一種應(yīng)用預(yù)加載裝置,包括:
[0022]多核處理器;用于存儲(chǔ)多核處理器可執(zhí)行的指令的存儲(chǔ)器;其中,所述多核處理器被配置為:接收?qǐng)鼍扒袚Q指令,所述場(chǎng)景切換指令用于指示從第一用戶切換活動(dòng)Activity切換至第二 Activity;對(duì)所述第一 Acti vity暫停處理;在所述第一 Acti vity的暫停處理過程中,獲取所述第二 Activity的預(yù)加載類列表,基于空閑計(jì)算資源,啟動(dòng)至少一個(gè)線程對(duì)所述第二Activity的預(yù)加載類列表中的類進(jìn)行加載;其中,所述第二Activity的預(yù)加載類列表包括至少一個(gè)所述第二 Activity在歷史運(yùn)行過程中所使用到的類。上述技術(shù)方案,通過在場(chǎng)景切換時(shí),在對(duì)切換前的第一 Activity進(jìn)行暫停處理時(shí),利用空閑資源,對(duì)切換后的場(chǎng)景所可能使用到的類提前進(jìn)行加載,這種在暫停處理過程中,采用并行的方式,啟動(dòng)至少一個(gè)線程加載后續(xù)可能會(huì)使用到的類的方式,使得在接下來的運(yùn)行過程中,如果需要使用已預(yù)加載的某個(gè)類,終端如果發(fā)現(xiàn)這個(gè)類已經(jīng)被加載,也即是已經(jīng)初始化,則可以直接跳過這個(gè)類的初始化流程,從而加快了整體執(zhí)行速度,節(jié)約了真正使用這些類時(shí)所需消耗的時(shí)間,提高了應(yīng)用的運(yùn)行速度。
[0023]應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
【附圖說明】
[0024]此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實(shí)施例,并與說明書一起用于解釋本公開的原理。
[0025]圖1是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用預(yù)加載方法的流程圖;
[0026]圖2是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用預(yù)加載方法的流程圖;
[0027]圖3是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用預(yù)加載裝置框圖;
[0028]圖4是根據(jù)一示例性實(shí)施例示出的另一種應(yīng)用預(yù)加載裝置框圖;
[0029]圖5是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用預(yù)加載裝置500的框圖。
【具體實(shí)施方式】
[0030]為使本公開的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本公開實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0031]這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本公開相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本公開的一些方面相一致的裝置和方法的例子。
[0032]用戶切換活動(dòng)(Acti vity)是Andro id平臺(tái)的一種標(biāo)準(zhǔn)組件。實(shí)際上一個(gè)Acti vity就是應(yīng)用中的一個(gè)單一的屏幕,它繼承自Activity類,它將顯示由Views組成的UI (UserInterface,用戶界面)以及響應(yīng)事件。
[0033]本領(lǐng)域技術(shù)人員可以獲知,一個(gè)應(yīng)用Activity的生命周期包括:啟動(dòng)一個(gè)Activity時(shí),Activity()的構(gòu)造函數(shù)執(zhí)行完畢后,系統(tǒng)調(diào)用onCreate()方法,在這里設(shè)置Acti vity的全局狀態(tài)和資源,然后調(diào)用onStart O方法,在這個(gè)方法執(zhí)行完畢,Acti vity在屏幕中可見。執(zhí)行onResume O方法,這個(gè)時(shí)候Acti vity在一個(gè)loop循環(huán)中的等待窗口事件。當(dāng)窗口部分可見時(shí),也就是說Acti vity不是在最前端時(shí),Activity的onFreeze()方法被調(diào)用,這個(gè)方法保存Activity—些內(nèi)部狀態(tài)。然后窗口暫停,直到Activity又出現(xiàn)在最前端,activity的onResume()方法被調(diào)用。如果Activity窗口不可見,則說明Activity的onStop()方法被調(diào)用,直到覆蓋Activity的窗口關(guān)閉時(shí),activity的onRestartO方法開始調(diào)用,然后重復(fù)onStartO方法。當(dāng)系統(tǒng)回收資源或者Activity被調(diào)用finishO方法時(shí),Activity停止,調(diào)用onDestroyO釋放Ac t i v i ty擁有的資源。
[0034]圖1是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用預(yù)加載方法的流程圖,如圖1所示,應(yīng)用預(yù)加載方法用于終端中,包括以下步驟。
[0035]在步驟101中,接收?qǐng)鼍扒袚Q指令,所述場(chǎng)景切換指令用于指示從第一用戶切換活動(dòng) Acti vity 切換至第二 Acti vity。
[0036]在步驟102中,對(duì)所述第一Activity暫停處理。
[0037]在步驟103中,在所述第一Activity的暫停處理過程中,獲取所述第二Activity的預(yù)加載類列表,基于空閑計(jì)算資源,啟動(dòng)至少一個(gè)線程對(duì)所述第二 Acti vity的預(yù)加載類列表中的類進(jìn)行加載,其中,所述第二Activity的預(yù)加載類列表包括至少一個(gè)所述第二Activity在歷史運(yùn)行過程中所使用到的類。
[0038]上述技術(shù)方案,通過在場(chǎng)景切換時(shí),在對(duì)切換前的第一Activity進(jìn)行暫停處理時(shí),利用空閑資源,對(duì)切換后的場(chǎng)景所可能使用到的類提前進(jìn)行加載,這種在暫停處理過程中,采用并行的方式,啟動(dòng)至少一個(gè)線程加載后續(xù)可能會(huì)使用到的類的方式,使得在接下來的運(yùn)行過程中,如果需要使用已預(yù)加載的某個(gè)類,終端如果發(fā)現(xiàn)這個(gè)類已經(jīng)被加載,也即是已經(jīng)初始化,則可以直接跳過這個(gè)類的初始化流程,從而加快了整體執(zhí)行速度,節(jié)約了真正使用這些類時(shí)所需消耗的時(shí)間,提高了應(yīng)用的運(yùn)行速度。
[0039]在一種可能實(shí)現(xiàn)方式中,所述接收?qǐng)鼍扒袚Q指令之前,所述方法還包括:
[0040]在所述第二Activity的運(yùn)行過程中,記錄所述運(yùn)行過程中所使用到的類,生成所述第二 Activity的預(yù)加載類列表。
[0041 ]在一種可能實(shí)現(xiàn)方式中,所述方法還包括:
[0042]當(dāng)所述第二Activity所屬應(yīng)用的版本更新后,根據(jù)更新版本中所述第二 Activity的運(yùn)行過程,重新生成所述第二 Activity的預(yù)加載類列表。
[0043]在一種可能實(shí)現(xiàn)方式中,基于空閑計(jì)算資源,啟動(dòng)至少一個(gè)線程對(duì)所述第二Activity的預(yù)加載類列表中的類進(jìn)行加載包括:
[0044]如果所述空閑計(jì)算資源不能滿足所述第二Acti vity的預(yù)加載類列表中的類的加載需求,按照各個(gè)類在運(yùn)行過程中的使用先后順序,確定所述第二 Activity的預(yù)加載類列表中的目標(biāo)類;
[0045]啟動(dòng)至少一個(gè)線程對(duì)所述第二Activity的預(yù)加載類列表中的目標(biāo)類進(jìn)行加載。
[0046]在一種可能實(shí)現(xiàn)方式中,所述第一Activity與所述第二Activity屬于同一個(gè)應(yīng)用程序;或,所述第一 Activity屬于第一應(yīng)用程序,所述第二 Activity屬于第二應(yīng)用程序。
[0047]上述所有可選技術(shù)方案,可以采用任意結(jié)合形成本公開的可選實(shí)施例,在此不再
--贅述。
[0048]圖2是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用預(yù)加載方法的流程圖,如圖2所示,應(yīng)用預(yù)加載方法用于終端中,包括以下步驟。
[0049]在步驟201中,在第二Activity的運(yùn)行過程中,記錄運(yùn)行過程中所使用到類,生成該第二 Acti vity的預(yù)加載類列表,該第二 Acti vity的預(yù)加載類列表包括至少一個(gè)該第二Activity在歷史運(yùn)行過程中所使用到的類。
[0050]其中,該第二 Activity可以是指任一個(gè)應(yīng)用中的任一個(gè)Activity,本公開實(shí)施例對(duì)此不做限制。該記錄以及生成預(yù)加載類列表的過程,可以是在該應(yīng)用安裝后第一次運(yùn)行時(shí)進(jìn)行,也可以是在應(yīng)用的每一次運(yùn)行時(shí)均進(jìn)行,可以根據(jù)每一次運(yùn)行時(shí)第二 Activity所使用到的類不斷完善該預(yù)加載列表,如,在第一次運(yùn)行時(shí),第二Activity加載了類Al至A5,在第N次運(yùn)行時(shí),第二 Activity又加載了類BI至B3,則可以將類BI至B3添加至預(yù)加載列表,以達(dá)到最佳的預(yù)加載效果。
[0051]在本公開實(shí)施例中,僅以預(yù)加載類列表是本地生成并存儲(chǔ)于本地為例進(jìn)行說明,而在實(shí)際應(yīng)用中,該預(yù)加載類列表還可以是一個(gè)由網(wǎng)絡(luò)側(cè)提供的通用的預(yù)加載類列表,由終端從網(wǎng)絡(luò)側(cè)獲取并存儲(chǔ)于本地。
[0052]進(jìn)一步地,在應(yīng)用運(yùn)行過程中,還可以基于實(shí)際運(yùn)行情況,對(duì)該本地已存儲(chǔ)的預(yù)加載類列表進(jìn)行調(diào)整,以使得預(yù)加載過程更加符合用戶的實(shí)際使用習(xí)慣。其中,從網(wǎng)絡(luò)側(cè)獲取預(yù)加載類列表的時(shí)機(jī)可以有多種情況,與上述生成時(shí)機(jī)類似,本公開實(shí)施例對(duì)此不作具體限定。
[0053]在一種可能實(shí)現(xiàn)方式中,應(yīng)用版本會(huì)不時(shí)發(fā)生更新,因此,為了保證預(yù)加載的準(zhǔn)確性,當(dāng)該第二 Acti vity所屬應(yīng)用的版本更新后,根據(jù)更新版本中該第二 Acti vity的運(yùn)行過程,重新生成該第二 Activity的預(yù)加載類列表。對(duì)于一個(gè)Activity來說,新版本與原有版本共同的Activity中新增或減少了某些類,針對(duì)這種情況,為了實(shí)現(xiàn)加速后續(xù)運(yùn)行以及空間和成本的需求,需要為Activity生成新的預(yù)加載類列表。而由于更新版本一般會(huì)包含不同的功能,因此,還可能出現(xiàn)的情況可以包括:(I)更新版本不包含原有版本的某些Activity,針對(duì)這種情況,為了節(jié)約空間和加載成本,需要將原有Acti vity對(duì)應(yīng)的預(yù)加載類列表刪除。
(2)新版本包含原有版本中沒有的新Activity,針對(duì)這種情況,為了實(shí)現(xiàn)加速后續(xù)運(yùn)行,需要為新Activity生成預(yù)加載類列表。(3)更新版本與原有版本具有相同的一些Activity,但是這些Activity會(huì)用到的類發(fā)生了增加或刪除的變化,因此,需要為應(yīng)用的Activity重新生成預(yù)加載類列表。
[0054]當(dāng)然,上述三種情況可能并發(fā),此時(shí)可以應(yīng)用上述對(duì)應(yīng)的更新方法為更新版本應(yīng)用中發(fā)生變化的Activity重新生成新的預(yù)加載類列表。
[0055]在步驟202中,接收?qǐng)鼍扒袚Q指令,該場(chǎng)景切換指令用于指示從第一用戶切換活動(dòng)Activity切換至第二Activity ο
[0056]在本公開的一個(gè)實(shí)施例中,該場(chǎng)景切換指令可以是由用戶在系統(tǒng)桌面上對(duì)任一應(yīng)用程序圖標(biāo)的點(diǎn)擊操作觸發(fā),所述第一 Acti vity為桌面Activity,所述第二 Acti vity為任一個(gè)應(yīng)用程序的主Activity。也即是,上述接收到的場(chǎng)景切換指令事實(shí)上用于啟動(dòng)某一個(gè)應(yīng)用程序。
[0057]在本公開的一個(gè)實(shí)施例中,該場(chǎng)景切換指令可以是由用戶在某一應(yīng)用界面上對(duì)按鈕的點(diǎn)擊操作觸發(fā),該第一 Acti vity與該第二 Activity屬于同一個(gè)應(yīng)用程序,也即是,上述接收到的場(chǎng)景切換指令事實(shí)上用于在一個(gè)應(yīng)用程序內(nèi)進(jìn)行界面跳轉(zhuǎn),
[0058]在本公開的另一個(gè)實(shí)施例中,該場(chǎng)景切換指令可以是由用戶在某一應(yīng)用界面上對(duì)另一應(yīng)用界面的跳轉(zhuǎn)操作觸發(fā),例如,在某一應(yīng)用界面上點(diǎn)擊跳轉(zhuǎn)至另一應(yīng)用界面的按鈕。該第一 Activity屬于第一應(yīng)用程序,該第二 Activity屬于第二應(yīng)用程序,一般地,在應(yīng)用程序之間進(jìn)行跳轉(zhuǎn)時(shí),該第二 Acti vity可以是指應(yīng)用程序的主Activity,本公開對(duì)此不做具體限定。
[0059]在步驟203中,對(duì)第一Activity暫停處理。
[0060]該進(jìn)行暫停處理的線程可以是由多核終端的任一個(gè)核啟動(dòng)。第二Activity可以包含多個(gè)類,也即是第二 Activi ty的全局狀態(tài)和資源,加載第二 Acti vity所包含的類之后,可以實(shí)現(xiàn)第二 Activity的前臺(tái)運(yùn)行。
[0061 ] 在步驟204中,在該第一Activity的暫停處理過程中,獲取該第二Activity的預(yù)加載類列表,基于空閑計(jì)算資源,啟動(dòng)至少一個(gè)線程對(duì)該第二 Acti vity的預(yù)加載類列表中的類進(jìn)行加載。
[0062]由于在該第一Activity的暫停處理過程中,終端內(nèi)可能存在一些處于閑置狀態(tài)的計(jì)算資源,為了在提高應(yīng)用運(yùn)行速度的同時(shí)提高資源利用率,可以將這些空閑計(jì)算資源利用起來,以便提高處理器的利用率。該至少一個(gè)線程可以是由多核終端的上述已啟動(dòng)線程所占用的核以外的任一個(gè)核啟動(dòng)。
[0063]上述預(yù)加載類列表中可以包括該第二Acti vity所屬應(yīng)用在歷史運(yùn)行過程中所使用到的類,具體地,還可以僅包括第二 Activity在歷史運(yùn)行過程中所使用到的類,本公開對(duì)此不做具體限定。
[0064]當(dāng)該第一 Acti vity為桌面Activity,所述第二 Acti vity為任一個(gè)應(yīng)用程序的主Activity時(shí),在對(duì)第一Activity暫停處理后,還可以啟動(dòng)應(yīng)用進(jìn)程對(duì)應(yīng)用的運(yùn)行環(huán)境進(jìn)行初始化工作,該初始化工作通常會(huì)比應(yīng)用已經(jīng)啟動(dòng)后的Activity切換過程耗費(fèi)更多時(shí)間,因此,在所述第一Activity的暫停處理并對(duì)應(yīng)用進(jìn)行初始化的過程中,進(jìn)行步驟204的第二Activity的預(yù)加載類列表加載過程,能夠加載更多的類,使得后續(xù)應(yīng)用的運(yùn)行速度提升效果更好。
[0065]當(dāng)然,對(duì)于多核終端來說,并不一定是除了進(jìn)行暫停處理的線程所占用的核以外的核均處于閑置狀態(tài),因此,在一種可能實(shí)現(xiàn)方式中,基于空閑計(jì)算資源,啟動(dòng)至少一個(gè)線程對(duì)該第二 Activity的預(yù)加載類列表中的類進(jìn)行加載包括:如果該空閑計(jì)算資源不能滿足該第二 Activity的預(yù)加載類列表中的類的加載需求,按照各個(gè)類在運(yùn)行過程中的使用先后順序,確定該第二Activity的預(yù)加載類列表中的目標(biāo)類;啟動(dòng)至少一個(gè)線程對(duì)該第二Activity的預(yù)加載類列表中的目標(biāo)類進(jìn)行加載。終端可以判斷當(dāng)前處于閑置狀態(tài)的核是否能夠加載整個(gè)列表,如果不能,則獲取一定的類進(jìn)行加載,例如,按照使用時(shí)間進(jìn)行加載,或在其他實(shí)施例中,還可以按照使用頻率加載,本公開不做具體限定。
[0066]需要說明的是,上述應(yīng)用加載方法可以應(yīng)用于任一種應(yīng)用,且這個(gè)加載方法無需第三方應(yīng)用進(jìn)行適配,可以大大提高終端上所安裝應(yīng)用的啟動(dòng)速度和應(yīng)用速度。
[0067]上述技術(shù)方案,通過在場(chǎng)景切換時(shí),在對(duì)切換前的第一Activity進(jìn)行暫停處理時(shí),利用空閑資源,對(duì)切換后的場(chǎng)景所可能使用到的類提前進(jìn)行加載,這種在啟動(dòng)第一線程進(jìn)行第二Activity所包含的類的加載的同時(shí),采用并行的方式,啟動(dòng)至少一個(gè)線程加載后續(xù)可能會(huì)使用到的類的方式,使得在接下來的運(yùn)行過程中,如果需要使用已預(yù)加載的某個(gè)類,終端如果發(fā)現(xiàn)這個(gè)類已經(jīng)被加載,也即是已經(jīng)初始化,則可以直接跳過這個(gè)類的初始化流程,從而加快了整體執(zhí)行速度,節(jié)約了真正使用這些類時(shí)所需消耗的時(shí)間,提高了應(yīng)用的運(yùn)行速度。
[0068]圖3是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用預(yù)加載裝置框圖。參照?qǐng)D3,該裝置包括接收模塊301,暫停模塊302、獲取模塊303和加載模塊304。
[0069]接收模塊301,用于接收?qǐng)鼍扒袚Q指令,所述場(chǎng)景切換指令用于指示從第一用戶切換活動(dòng)Activity切換至第二 Activity ;
[0070]暫停模塊302,用于對(duì)所述第一 Activity暫停處理;
[0071]獲取模塊303,用于在加載所述第二Activity所包含類的同時(shí),獲取所述第二Activity的預(yù)加載類列表;
[0072]加載模塊304,用于在所述第一Activity的暫停處理過程中,獲取所述第二Activity的預(yù)加載類列表;
[0073]其中,所述第二Activity的預(yù)加載類列表包括至少一個(gè)所述第二Activity在歷史運(yùn)行過程中所使用到的類。
[0074]在一種可能實(shí)現(xiàn)方式中,參見圖4,在上述圖3結(jié)構(gòu)的基礎(chǔ)上,所述裝置還包括列表生成模塊305,用于在所述第二Activity的運(yùn)行過程中,記錄所述運(yùn)行過程中所使用到的類,生成所述第二 Activity的預(yù)加載類列表。
[0075]在一種可能實(shí)現(xiàn)方式中,所述列表生成模塊305,還用于當(dāng)所述第二Activity所屬應(yīng)用的版本更新后,根據(jù)更新版本中所述第二Activity的運(yùn)行過程,重新生成所述第二Activity的預(yù)加載類列表。
[0076]在一種可能實(shí)現(xiàn)方式中,所述第二加載模塊304用于如果所述空閑計(jì)算資源不能滿足所述第二 Activity的預(yù)加載類列表中的類的加載需求,按照各個(gè)類在運(yùn)行過程中的使用先后順序,確定所述第二Activity的預(yù)加載類列表中的目標(biāo)類;啟動(dòng)至少一個(gè)線程對(duì)所述第二 Activity的預(yù)加載類列表中的目標(biāo)類進(jìn)行加載。
[0077]在一種可能實(shí)現(xiàn)方式中,所述第一Activity為桌面Activity,所述第二Activity為任一個(gè)應(yīng)用程序的主Acti vity;或,所述第一 Acti vity與所述第二 Acti vity屬于同一個(gè)應(yīng)用程序;或,所述第一Activity屬于第一應(yīng)用程序,所述第二Activity屬于第二應(yīng)用程序。
[0078]關(guān)于上述實(shí)施例中的裝置,其中各個(gè)模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實(shí)施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說明。
[0079]圖5是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用預(yù)加載裝置500的框圖。例如,裝置500可以是移動(dòng)電話,計(jì)算機(jī),數(shù)字廣播終端,消息收發(fā)設(shè)備,游戲控制臺(tái),平板設(shè)備,醫(yī)療設(shè)備,健身設(shè)備,個(gè)人數(shù)字助理等。
[0080]參照?qǐng)D5,裝置500可以包括以下一個(gè)或多個(gè)組件:處理組件502,存儲(chǔ)器504,電源組件506,多媒體組件508,音頻組件510,輸入/輸出(I/O)的接口512,傳感器組件514,以及通信組件516。
[0081]處理組件502通??刂蒲b置500的整體操作,諸如與顯示,電話呼叫,數(shù)據(jù)通信,相機(jī)操作和記錄操作相關(guān)聯(lián)的操作。處理組件502可以包括一個(gè)多核處理器520來執(zhí)行指令,以完成上述的方法的全部或部分步驟。此外,處理組件502可以包括一個(gè)或多個(gè)模塊,便于處理組件502和其他組件之間的交互。例如,處理組件502可以包括多媒體模塊,以方便多媒體組件508和處理組件502之間的交互。
[0082]存儲(chǔ)器504被配置為存儲(chǔ)各種類型的數(shù)據(jù)以支持在裝置500的操作。這些數(shù)據(jù)的示例包括用于在裝置500上操作的任何應(yīng)用程序或方法的指令,聯(lián)系人數(shù)據(jù),電話簿數(shù)據(jù),消息,圖片,視頻等。存儲(chǔ)器504可以由任何類型的易失性或非易失性存儲(chǔ)設(shè)備或者它們的組合實(shí)現(xiàn),如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM),電可擦除可編程只讀存儲(chǔ)器(EEPROM),可擦除可編程只讀存儲(chǔ)器(EPROM),可編程只讀存儲(chǔ)器(PROM),只讀存儲(chǔ)器(ROM),磁存儲(chǔ)器,快閃存儲(chǔ)器,磁盤或光盤。
[0083]電源組件506為裝置500的各種組件提供電力。電源組件506可以包括電源管理系統(tǒng),一個(gè)或多個(gè)電源,及其他與為裝置500生成、管理和分配電力相關(guān)聯(lián)的組件。
[0084]多媒體組件508包括在所述裝置500和用戶之間的提供一個(gè)輸出接口的屏幕。在一些實(shí)施例中,屏幕可以包括液晶顯示器(LCD)和觸摸面板(TP)。如果屏幕包括觸摸面板,屏幕可以被實(shí)現(xiàn)為觸摸屏,以接收來自用戶的輸入信號(hào)。觸摸面板包括一個(gè)或多個(gè)觸摸傳感器以感測(cè)觸摸、滑動(dòng)和觸摸面板上的手勢(shì)。所述觸摸傳感器可以不僅感測(cè)觸摸或滑動(dòng)動(dòng)作的邊界,而且還檢測(cè)與所述觸摸或滑動(dòng)操作相關(guān)的持續(xù)時(shí)間和壓力。在一些實(shí)施例中,多媒體組件508包括一個(gè)前置攝像頭和/或后置攝像頭。當(dāng)裝置500處于操作模式,如拍攝模式或視頻模式時(shí),前置攝像頭和/或后置攝像頭可以接收外部的多媒體數(shù)據(jù)。每個(gè)前置攝像頭和后置攝像頭可以是一個(gè)固定的光學(xué)透鏡系統(tǒng)或具有焦距和光學(xué)變焦能力。
[0085]音頻組件510被配置為輸出和/或輸入音頻信號(hào)。例如,音頻組件510包括一個(gè)麥克風(fēng)(MIC),當(dāng)裝置500處于操作模式,如呼叫模式、記錄模式和語音識(shí)別模式時(shí),麥克風(fēng)被配置為接收外部音頻信號(hào)。所接收的音頻信號(hào)可以被進(jìn)一步存儲(chǔ)在存儲(chǔ)器504或經(jīng)由通信組件516發(fā)送。在一些實(shí)施例中,音頻組件510還包括一個(gè)揚(yáng)聲器,用于輸出音頻信號(hào)。
[0086]I/O接口512為處理組件502和外圍接口模塊之間提供接口,上述外圍接口模塊可以是鍵盤,點(diǎn)擊輪,按鈕等。這些按鈕可包括但不限于:主頁按鈕、音量按鈕、啟動(dòng)按鈕和鎖定按鈕。
[0087]傳感器組件514包括一個(gè)或多個(gè)傳感器,用于為裝置500提供各個(gè)方面的狀態(tài)評(píng)估。例如,傳感器組件514可以檢測(cè)到設(shè)備500的打開/關(guān)閉狀態(tài),組件的相對(duì)定位,例如所述組件為裝置500的顯示器和小鍵盤,傳感器組件514還可以檢測(cè)裝置500或裝置500—個(gè)組件的位置改變,用戶與裝置500接觸的存在或不存在,裝置500方位或加速/減速和裝置500的溫度變化。傳感器組件514可以包括接近傳感器,被配置用來在沒有任何的物理接觸時(shí)檢測(cè)附近物體的存在。傳感器組件514還可以包括光傳感器,如CMOS或C⑶圖像傳感器,用于在成像應(yīng)用中使用。在一些實(shí)施例中,該傳感器組件514還可以包括加速度傳感器,陀螺儀傳感器,磁傳感器,壓力傳感器或溫度傳感器。
[0088]通信組件516被配置為便于裝置500和其他設(shè)備之間有線或無線方式的通信。裝置500可以接入基于通信標(biāo)準(zhǔn)的無線網(wǎng)絡(luò),如WiFi,2G或3G,或它們的組合。在一個(gè)示例性實(shí)施例中,通信部件516經(jīng)由廣播信道接收來自外部廣播管理系統(tǒng)的廣播信號(hào)或廣播相關(guān)信息。在一個(gè)示例性實(shí)施例中,所述通信部件516還包括近場(chǎng)通信(NFC)模塊,以促進(jìn)短程通信。例如,在NFC模塊可基于射頻識(shí)別(RFID)技術(shù),紅外數(shù)據(jù)協(xié)會(huì)(IrDA)技術(shù),超寬帶(UWB)技術(shù),藍(lán)牙(BT)技術(shù)和其他技術(shù)來實(shí)現(xiàn)。
[0089]在示例性實(shí)施例中,裝置500可以被一個(gè)或多個(gè)應(yīng)用專用集成電路(ASIC)、數(shù)字信號(hào)處理器(DSP)、數(shù)字信號(hào)處理設(shè)備(DSPD)、可編程邏輯器件(PLD)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、控制器、微控制器、微處理器或其他電子元件實(shí)現(xiàn),用于執(zhí)行上述應(yīng)用預(yù)加載方法。
[0090]在示例性實(shí)施例中,還提供了一種包括指令的非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),例如包括指令的存儲(chǔ)器504,上述指令可由裝置500的多核處理器520執(zhí)行以完成上述方法。例如,所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是ROM、隨機(jī)存取存儲(chǔ)器(RAM)、CD-ROM、磁帶、軟盤和光數(shù)據(jù)存儲(chǔ)設(shè)備等。
[0091]本領(lǐng)域技術(shù)人員在考慮說明書及實(shí)踐這里公開的發(fā)明后,將容易想到本公開的其它實(shí)施方案。本申請(qǐng)旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。說明書和實(shí)施例僅被視為示例性的,本公開的真正范圍和精神由下面的權(quán)利要求指出。
[0092]應(yīng)當(dāng)理解的是,本公開并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本公開的范圍僅由所附的權(quán)利要求來限制。
【主權(quán)項(xiàng)】
1.一種應(yīng)用預(yù)加載方法,其特征在于,所述方法包括: 接收?qǐng)鼍扒袚Q指令,所述場(chǎng)景切換指令用于指示從第一用戶切換活動(dòng)Activity切換至第二 Activity ; 對(duì)所述第一 Activity暫停處理; 在所述第一Activity的暫停處理過程中,獲取所述第二Activity的預(yù)加載類列表,基于空閑計(jì)算資源,啟動(dòng)至少一個(gè)線程對(duì)所述第二 Acti vity的預(yù)加載類列表中的類進(jìn)行加載; 其中,所述第二Activity的預(yù)加載類列表包括至少一個(gè)所述第二Activity在歷史運(yùn)行過程中所使用到的類。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述接收?qǐng)鼍扒袚Q指令之前,所述方法還包括: 在所述第二Activity的運(yùn)行過程中,記錄所述運(yùn)行過程中所使用到的類,生成所述第二 Activity的預(yù)加載類列表。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括: 當(dāng)所述第二 Activity所屬應(yīng)用的版本更新后,根據(jù)更新版本中所述第二 Acti vity的運(yùn)行過程,重新生成所述第二 Activity的預(yù)加載類列表。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,基于空閑計(jì)算資源,啟動(dòng)至少一個(gè)線程對(duì)所述第二 Activity的預(yù)加載類列表中的類進(jìn)行加載包括: 如果所述空閑計(jì)算資源不能滿足所述第二 Activity的預(yù)加載類列表中的類的加載需求,按照各個(gè)類在運(yùn)行過程中的使用先后順序,確定所述第二 Activity的預(yù)加載類列表中的目標(biāo)類; 啟動(dòng)至少一個(gè)線程對(duì)所述第二 Activity的預(yù)加載類列表中的目標(biāo)類進(jìn)行加載。5.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的方法,其特征在于,所述第一Activity為桌面Activity,所述第二 Activity為任一個(gè)應(yīng)用程序的主Activity;或,所述第一 Activity與所述第二 Activity屬于同一個(gè)應(yīng)用程序;或,所述第一 Activity屬于第一應(yīng)用程序,所述第二Activity屬于第二應(yīng)用程序。6.一種應(yīng)用預(yù)加載裝置,其特征在于,所述裝置包括: 接收模塊,用于接收?qǐng)鼍扒袚Q指令,所述場(chǎng)景切換指令用于指示從第一用戶切換活動(dòng)Acti vity 切換至第二 Acti vity ; 暫停模塊,用于對(duì)所述第一 Activity暫停處理; 獲取模塊,用于在所述第一Activity的暫停處理過程中,獲取所述第二Activity的預(yù)加載類列表; 加載模塊,用于基于空閑計(jì)算資源,啟動(dòng)至少一個(gè)線程對(duì)所述第二 Acti vity的預(yù)加載類列表中的類進(jìn)行加載; 其中,所述第二Activity的預(yù)加載類列表包括至少一個(gè)所述第二Activity在歷史運(yùn)行過程中所使用到的類。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括列表生成模塊,用于在所述第二Activity的運(yùn)行過程中,記錄所述運(yùn)行過程中所使用到的類,生成所述第二Activity的預(yù)加載類列表。8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述列表生成模塊,還用于當(dāng)所述第二Acti vity所屬應(yīng)用的版本更新后,根據(jù)更新版本中所述第二 Acti vity的運(yùn)行過程,重新生成所述第二 Activity的預(yù)加載類列表。9.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第二加載模塊用于如果所述空閑計(jì)算資源不能滿足所述第二 Activity的預(yù)加載類列表中的類的加載需求,按照各個(gè)類在運(yùn)行過程中的使用先后順序,確定所述第二Activity的預(yù)加載類列表中的目標(biāo)類;啟動(dòng)至少一個(gè)線程對(duì)所述第二 Activity的預(yù)加載類列表中的目標(biāo)類進(jìn)行加載。10.根據(jù)權(quán)利要求6至9任一項(xiàng)所述的裝置,其特征在于,所述第一Activity為桌面Activity,所述第二 Activity為任一個(gè)應(yīng)用程序的主Activity;或,所述第一 Activity與所述第二 Activity屬于同一個(gè)應(yīng)用程序;或,所述第一 Activity屬于第一應(yīng)用程序,所述第二Activity屬于第二應(yīng)用程序。11.一種應(yīng)用預(yù)加載裝置,其特征在于,包括: 多核處理器; 用于存儲(chǔ)所述多核處理器可執(zhí)行的指令的存儲(chǔ)器; 其中,所述多核處理器被配置為: 接收?qǐng)鼍扒袚Q指令,所述場(chǎng)景切換指令用于指示從第一用戶切換活動(dòng)Activity切換至第二 Activity ; 對(duì)所述第一 Activity暫停處理; 在所述第一Activity的暫停處理過程中,獲取所述第二Activity的預(yù)加載類列表,基于空閑計(jì)算資源,啟動(dòng)至少一個(gè)線程對(duì)所述第二 Acti vity的預(yù)加載類列表中的類進(jìn)行加載; 其中,所述第二Activity的預(yù)加載類列表包括至少一個(gè)所述第二Activity在歷史運(yùn)行過程中所使用到的類。
【文檔編號(hào)】G06F9/445GK105955765SQ201610256360
【公開日】2016年9月21日
【申請(qǐng)日】2016年4月22日
【發(fā)明人】王舒捷, 孫念, 吳俊洲
【申請(qǐng)人】北京小米移動(dòng)軟件有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1