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

一種應(yīng)用程序運行多個實例的方法、裝置及終端設(shè)備的制作方法

文檔序號:6631192閱讀:256來源:國知局
一種應(yīng)用程序運行多個實例的方法、裝置及終端設(shè)備的制作方法
【專利摘要】本發(fā)明實施例公開了一種應(yīng)用程序運行多個實例的方法,包括:接收應(yīng)用程序的啟動指令;若所述應(yīng)用程序的源進程為已啟動狀態(tài),根據(jù)所述啟動指令生成所述應(yīng)用程序的鏡像進程,并將所述鏡像進程重定向到預(yù)設(shè)的第一啟動路徑;讀取所述第一啟動路徑下預(yù)設(shè)的第一啟動配置文件;根據(jù)所述第一啟動配置文件啟動所述鏡像進程。本發(fā)明實施例還公開了一種裝置和終端。采用本發(fā)明,可減少存儲空間的需求。
【專利說明】一種應(yīng)用程序運行多個實例的方法、裝置及終端設(shè)備

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機領(lǐng)域,尤其涉及一種應(yīng)用程序運行多個實例的方法、裝置及終端。

【背景技術(shù)】
[0002]隨著移動互聯(lián)網(wǎng)的發(fā)展,用戶對移動終端應(yīng)用程序APP的需求越來越豐富。在日常的使用中,用戶會擁有多個APP的賬號,用于分別滿足工作、學(xué)習(xí)和生活的等不同場合的需要。例如,用戶擁有多個即時通信軟件,在某些場合中,用戶需要同時開啟多個即時通信軟件,即多實例運行,這就需要同一 APP可以在移動終端上多次運行,且每個運行的實例互相獨立互不影響。
[0003]目前在移動終端上實現(xiàn)多實例運行的方法為:通過代理APP下載定制的需要多實例運行的APP,需要同時運行幾個APP就安裝基礎(chǔ)定制的APP。上述方法存在的不足是:每運行一次APP就需要安裝一次定制的APP,會成倍的占用移動終端的存儲空間。


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

[0004]本發(fā)明實施例所要解決的技術(shù)問題在于,提供一種應(yīng)用程序運行多個實例的方法??山鉀Q現(xiàn)有技術(shù)中多實例運行的應(yīng)用程序占用的存儲空間大的不足
[0005]為了解決上述技術(shù)問題,本發(fā)明實施例提供了一種應(yīng)用程序運行多個實例的方法,包括:
[0006]接收應(yīng)用程序的啟動指令;
[0007]若所述應(yīng)用程序的源進程為已啟動狀態(tài),根據(jù)所述啟動指令生成所述應(yīng)用程序的鏡像進程,并將所述鏡像進程重定向到預(yù)設(shè)的第一啟動路徑;
[0008]讀取所述第一啟動路徑下預(yù)設(shè)的第一啟動配置文件;
[0009]根據(jù)所述第一啟動配置文件啟動所述鏡像進程。
[0010]相應(yīng)地,本發(fā)明實施例還提供了一種應(yīng)用程序運行多個實例的裝置,包括:
[0011]接收模塊,用于接收應(yīng)用程序的啟動指令;
[0012]重定向模塊,用于若所述應(yīng)用程序的源進程為已啟動狀態(tài),根據(jù)所述啟動指令生成所述應(yīng)用程序的鏡像進程,并將所述鏡像進程重定向到預(yù)設(shè)的第一啟動路徑;
[0013]讀取模塊,用于讀取所述第一啟動路徑下預(yù)設(shè)的第一啟動配置文件;
[0014]啟動模塊,用于根據(jù)所述第一啟動配置文件啟動所述鏡像進程。
[0015]實施本發(fā)明實施例,具有如下有益效果:
[0016]通過接收應(yīng)用程序的啟動指令,若應(yīng)用程序的源進程為已啟動狀態(tài),根據(jù)啟動指令生成鏡像進程,并將鏡像進程重定向到預(yù)設(shè)的第一啟動路徑,讀取第一啟動路徑下的第一啟動配置文件并啟動鏡像進程,鏡像進程的啟動路徑和啟動配置文件與源進程不同,可以是操作系統(tǒng)的互斥機制失效,以達到多實例運行的需求,同時,本發(fā)明實施例不需要多次安裝應(yīng)用程序,能有效的節(jié)省存儲空間。

【專利附圖】

【附圖說明】
[0017]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0018]圖1是本發(fā)明第一實施例提供的一種應(yīng)用程序運行多個實例的方法的流程示意圖;
[0019]圖2是本發(fā)明第二實施例提供的一種應(yīng)用程序運行多個實例的方法的流程示意圖;
[0020]圖3是本發(fā)明第一實施例提供的一種應(yīng)用程序運行多個實例的裝置的結(jié)構(gòu)示意圖;
[0021]圖4是本發(fā)明第二實施例提供的一種應(yīng)用程序運行多個實例的裝置的結(jié)構(gòu)示意圖;
[0022]圖5是圖4中啟動模塊的結(jié)構(gòu)示意圖。
[0023]圖6是本發(fā)明第三實施例提供的一種應(yīng)用程序運行多個實例的裝置的結(jié)構(gòu)示意圖。

【具體實施方式】
[0024]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0025]本發(fā)明實施例中,終端可以為PC(Personal Computer,個人計算機)、筆記本電腦、手機、PAD(平板電腦)、智能可穿戴設(shè)備、車載終端等。
[0026]下面結(jié)合圖1和圖2.,對本發(fā)明實施例提供的應(yīng)用程序運行多個實例的方法進行詳細介紹。
[0027]參見圖1,為本發(fā)明實施例提供的一種應(yīng)用程序運行多個實例的方法,在本發(fā)明實施例中,所述方法包括:
[0028]S101、接收應(yīng)用程序的啟動指令。
[0029]其中,應(yīng)用程序運行多個實例的裝置(以下簡稱裝置)可接收用戶通過鍵盤、鼠標(biāo)或觸摸屏等輸入設(shè)備發(fā)出的啟動指令,用戶可通過觸發(fā)顯示在顯示設(shè)備桌面或二級菜單下的圖標(biāo)生成啟動指令,該圖標(biāo)為指向應(yīng)用程序的啟動入口的快捷方式。例如,用戶通過點擊顯示在觸摸屏上的指向應(yīng)用程序的圖標(biāo),裝置檢測到圖標(biāo)上發(fā)生點擊事件,生成啟動指令,裝置接收到啟動應(yīng)用程序的啟動指令。
[0030]S102、若所述應(yīng)用程序的源進程為已啟動狀態(tài),根據(jù)所述啟動指令生成所述應(yīng)用程序的鏡像進程,并將所述鏡像進程重定向到預(yù)設(shè)的第一啟動路徑。
[0031]具體的,應(yīng)用程序的源進程指應(yīng)用程序第一次啟動完成后生成的進程,鏡像程序是指源進程啟動完成后再次啟動的進程,可以是第二次啟動或第三次啟動的進程或第N次啟動的進程,N >2。裝置接收到啟動應(yīng)用程序的啟動指令后,查詢應(yīng)用程序的源進程是否為已啟動狀態(tài)。查詢的方法可以是:獲取應(yīng)用程序的進程名或進程號PID(Pix)cessIdentity),查詢操作系統(tǒng)中為已啟動狀態(tài)的進程的進程名或PID是否與所述應(yīng)用程序相同,如果有相同的,表明應(yīng)用程序的源進程為已啟動狀態(tài),如果沒有相同的,表明應(yīng)用程序的源進程為未啟動狀態(tài)。具體實施時可以采用其他方法判斷應(yīng)用程序的源進程是否為已啟動狀態(tài)。如果應(yīng)用程序的源進程為已啟動狀態(tài),裝置根據(jù)啟動指令生成源進程的鏡像進程,并將鏡像進程重定向預(yù)設(shè)的到第一啟動路徑。由于鏡像進程為源進程的副本,在初始狀態(tài)下,鏡像進程的默認啟動路徑以及默認啟動配置文件和源進程是相同的,如果使用默認啟動路徑下的默認啟動配置文件啟動鏡像進程,會被操作系統(tǒng)的互斥機制識別出來,無法正常啟動鏡像進程。在本發(fā)明的實施例中,裝置將鏡像進程重定向到預(yù)設(shè)的第一啟動路徑,第一啟動路徑不同于源進程的默認啟動路徑。
[0032]S103、讀取所述第一啟動路徑下預(yù)設(shè)的第一啟動配置文件。
[0033]其中,預(yù)設(shè)設(shè)置有多個不同的啟動路徑,每個啟動路徑下預(yù)設(shè)設(shè)置有一個啟動配置文件,每個啟動配置文件中的啟動參數(shù)不相同,本發(fā)明實施例所述的第一啟動路徑可以是預(yù)先設(shè)置的多個啟動路徑中的任意一個。當(dāng)鏡像進程需要重定向啟動路徑時,可以根據(jù)鏡像進程的啟動順序依次將預(yù)設(shè)的啟動路徑分配給該鏡像進程,也可以從多個啟動路徑中隨機分配一個啟動路徑給該鏡像進程。需要說明的是,分配給鏡像進程的啟動路徑?jīng)]有被其他進程占用的進程。
[0034]裝置讀取分配的第一啟動路徑下的第一啟動文件,第一啟動文件中包括應(yīng)用程序的啟動參數(shù),例如,啟動參數(shù)包括但不限于應(yīng)用程序名、進程名和包名。
[0035]S104、根據(jù)所述第一啟動配置文件啟動所述鏡像進程。
[0036]具體的,裝置根據(jù)第一啟動配置文件中的啟動參數(shù)啟動鏡像進程,這樣,裝置可以同時運行應(yīng)用程序的源進程和鏡像進程,后續(xù)裝置可以采用上述相同的方法啟動多個鏡像進程,實現(xiàn)了應(yīng)用程序運行多個實例的需求。
[0037]實施本發(fā)明的實施例,通過接收應(yīng)用程序的啟動指令,若應(yīng)用程序的源進程為已啟動狀態(tài),根據(jù)啟動指令生成鏡像進程,并將鏡像進程重定向到預(yù)設(shè)的第一啟動路徑,讀取第一啟動路徑下的第一啟動配置文件并啟動鏡像進程,鏡像進程的啟動路徑和啟動配置文件與源進程不同,可以是操作系統(tǒng)的互斥機制失效,以達到多實例運行的需求,同時,本發(fā)明實施例不需要多次安裝應(yīng)用程序,能有效的節(jié)省存儲空間。
[0038]參見圖2,為本發(fā)明第二實施例提供的一種應(yīng)用程序運行多個實例的方法的流程圖,在本發(fā)明實施例中,所述方法包括:
[0039]S201、接收應(yīng)用程序的啟動指令。
[0040]其中,裝置可接收用戶通過鍵盤、鼠標(biāo)或等輸入設(shè)備發(fā)出啟動指令,用戶可通過觸發(fā)顯示設(shè)備桌面或二級菜單下顯示的圖標(biāo)生成啟動指令,圖標(biāo)為應(yīng)用程序啟動的快捷方式。例如,應(yīng)用程序為即時通信軟件,即時通信軟件安裝完成后,在顯示設(shè)備的桌面上顯示一個啟動應(yīng)用程序的快捷方式的圖標(biāo),用戶在觸摸屏點擊圖標(biāo)生成啟動指令,裝置接收到啟動應(yīng)用程序的啟動指令。
[0041]S202、所述應(yīng)用程序的源進程是否為已啟動狀態(tài)。
[0042]具體的,應(yīng)用程序的源進程指應(yīng)用程序第一次啟動完成后生成的進程,源進程的啟動過程按照應(yīng)用程序預(yù)先配置的啟動參數(shù)進程。裝置接收到應(yīng)用程序的啟動指令后,查詢應(yīng)用程序的源進程是否為已啟動狀態(tài),查詢的方法可以是:獲取應(yīng)用程序的進程名或進程號PID,查詢操作系統(tǒng)中是否存在相同進程名或PID的進程,如果存在,表明應(yīng)用程序的源進程為已啟動狀態(tài),執(zhí)行S203 ;如果不存在,表明應(yīng)用程序的源進程為未啟動狀態(tài),執(zhí)行S204。
[0043]示例性的,應(yīng)用程序為即時通信軟件,操作系統(tǒng)為Android操作系統(tǒng),即時通信軟件的進程名為com.tencent.mm, PID為65512,裝置接收到啟動即時通信軟件的啟動指令后,遍歷Android操作系統(tǒng)中所有為已啟動狀態(tài)的進程的進程名或PID,如果存在有進程名為com.tencent.mm或PID為65512的進程,則表明Android操作系統(tǒng)中即時通信軟件的源進程為已運行狀態(tài),否則即時通信軟件的源進程為未運行狀態(tài)。
[0044]S203、根據(jù)所述啟動指令生成所述應(yīng)用程序的鏡像進程,并將所述鏡像進程重定向到預(yù)設(shè)的第一啟動路徑。
[0045]其中,裝置確定應(yīng)用程序的源進程為已啟動狀態(tài),根據(jù)啟動指令生成應(yīng)用程序的鏡像進程,鏡像進程為源進程的副本,在初始狀態(tài)下,鏡像進程和源進程的默認啟動路徑以及默認啟動配置文件和源進程是相同的。如果安裝初始狀態(tài)下的默認啟動路徑和默認啟動配置文件來啟動鏡像進程,會被操作系統(tǒng)的互斥機制識別出來,導(dǎo)致無法正常啟動應(yīng)用程序的鏡像進程。在本發(fā)明實施例中,預(yù)先設(shè)置有多個啟動路徑,每個啟動路徑下有一個啟動配置文件,第一啟動路徑為多個啟動路徑中的一個。為鏡像進程重定向啟動路徑時,可以根據(jù)鏡像進程的啟動路徑依次分配啟動路徑,或者隨機從多個啟動路徑中分配一個啟動路徑給鏡像進程。需要說明的是,分配給鏡像進程的啟動路徑?jīng)]有被其他進程占用。裝置將鏡像進程的重定向到預(yù)設(shè)的第一啟動路徑。第一啟動路徑不同于源進程的默認啟動路徑。
[0046]示例性的,應(yīng)用程序為即時通信應(yīng)用程序,即時通信軟件的源進程的默認啟動路徑為/storage/instant message/system,鏡像進程在初始狀態(tài)時與源進程的默認啟動路徑是相同的。裝置在確定即時通信軟件的源進程為已啟動狀態(tài)后,將鏡像進程重定向到分配的第一啟動路徑/storage/instant messagel/system,操作系統(tǒng)的互斥機制會確定源進程和鏡像進程屬于不同的應(yīng)用程序,因此不會殺死鏡像進程。
[0047]S204、根據(jù)所述啟動指令生成所述應(yīng)用程序的源進程。
[0048]其中,應(yīng)用程序沒有啟動任何進程,此時啟動的進程為第一個啟動的進程,因此為應(yīng)用程序的源進程。
[0049]S205、讀取所述源進程關(guān)聯(lián)的默認啟動路徑下的默認啟動配置文件。
[0050]其中,裝置讀取應(yīng)用程序的默認啟動路徑下的默認啟動配置文件,上述配置信息在應(yīng)用程序中預(yù)先設(shè)置。
[0051 ] S206、根據(jù)所述默認啟動配置文件啟動所述源進程。
[0052]其中,裝置根據(jù)默認啟動配置文件中的默認啟動參數(shù)啟動源進程,源進程為第一個啟動的進程。
[0053]S207、讀取所述第一啟動路徑下預(yù)設(shè)的第一啟動配置文件。
[0054]其中,預(yù)先設(shè)置有不同于應(yīng)用程序的源進程的默認啟動路徑的多個啟動路徑,每個啟動路徑下存儲一個不同于源進程的默認啟動配置文件的啟動配置文件,在本發(fā)明實施例中,第一啟動路徑為多個啟動路徑中的任意一個。每個啟動路徑下的啟動配置文件均關(guān)聯(lián)有表示其占用狀態(tài)或空閑狀態(tài)的標(biāo)識符,空閑狀態(tài)表示該啟動配置文件的被某個線程占用,此時啟動配置文件不能再被分配給其他進程使用;空閑狀態(tài)表示啟動配置文件未被進程占用,此時該啟動配置文件可以被分配給其他進程使用。裝置讀取分配的第一啟動路徑下的第一啟動配置文件。
[0055]示例性的,應(yīng)用程序的源進程的默認啟動路徑為/storage/instant message/system,默認啟動路徑下的默認啟動配置文件為config ;裝置中預(yù)先設(shè)置有3個啟動路徑,分別為 /storage/instant messagel/system> /storage/instant message2/system> /storage/instant message3/system,對應(yīng)的啟動路徑下的啟動配置文件分別為configl、config2、config3,上述3個啟動配置文件均為空閑狀態(tài),裝置讀取其中一個啟動路徑下的啟動配置文件,例如,讀取configl。
[0056]S208、根據(jù)所述第一啟動配置文件啟動所述鏡像進程。
[0057]具體的,Android系統(tǒng)啟動后,由Init進程啟動Zygote服務(wù)進程,Zygote服務(wù)進程啟動完成后,裝置解析第一配置文件中的啟動參數(shù),啟動參數(shù)包括啟動應(yīng)用程序的鏡像進程所需的參數(shù),例如,啟動參數(shù)包括:進程號、存儲空間地址和啟動路徑,裝置發(fā)送通知消息以通知Zygote服務(wù)進程根據(jù)所述啟動參數(shù)創(chuàng)建所述鏡像進程,其中,所述通知消息中攜帶所述啟動參數(shù),Zygote服務(wù)進程根據(jù)啟動參數(shù)創(chuàng)建應(yīng)用程序的鏡像進程。在啟動Zygote服務(wù)進程時會創(chuàng)建一個Dalvik虛擬機實例,當(dāng)Zygote服務(wù)進程成功創(chuàng)建應(yīng)用程序的鏡像進程后,會將Dalvik虛擬機實體復(fù)制到創(chuàng)建的應(yīng)用程序的鏡像進程中,從而使鏡像進程有一個獨立的Dalvik虛擬機實例,Davlik虛擬機實例進一步對應(yīng)用程序的鏡像進程進行初始化后,最終啟動鏡像進程。
[0058]S209、接收到所述鏡像進程發(fā)出的寫操作時,將所述寫操作對應(yīng)的數(shù)據(jù)寫入預(yù)設(shè)的寫存儲區(qū),其中,所述預(yù)設(shè)的寫存儲區(qū)與所述源進程的默認寫存儲區(qū)的位置不相同。
[0059]其中,由于鏡像進程的獨立性,鏡像進程發(fā)出寫操作對應(yīng)的數(shù)據(jù)不能與其他進程共享,需要預(yù)先為每個鏡像進程開啟獨立的寫存儲區(qū),每個鏡像進程的寫存儲區(qū)的位置不相同,鏡像進程的寫存儲區(qū)和源進程的寫存儲區(qū)的位置也不相同。裝置接收到鏡像進程發(fā)出的寫操作時,將寫操作對應(yīng)的數(shù)據(jù)寫入預(yù)設(shè)的寫存儲區(qū)。
[0060]S210、接收到讀取所述鏡像進程的公有文件的讀請求時,將所述讀請求重定向到所述源進程,由所述源進程返回所述公有文件。
[0061]其中,公有文件指的是應(yīng)用程序的源進程和鏡像進程可以共享的文件,例如,公有文件包括但不限于應(yīng)用程序的提示音、圖標(biāo)和主題風(fēng)格。裝置接收到鏡像進程讀取公有文件的讀請求時,將讀請求重定向到源進程,由源進程讀取應(yīng)用程序的公有文件并返回給鏡像進程。
[0062]S211、接收到所述鏡像進程發(fā)出的用于調(diào)用系統(tǒng)服務(wù)的遠程過程調(diào)用協(xié)議RPC(Remote Procedure Call Protocol,簡稱RPC)調(diào)用請求時,將所述RPC調(diào)用請求中的第一參數(shù)映射為第二參數(shù),并將映射后的RPC調(diào)用請求發(fā)送至操作系統(tǒng)的內(nèi)核。
[0063]具體的,鏡像進程通過發(fā)出RPC請求調(diào)用系統(tǒng)服務(wù),例如,系統(tǒng)服務(wù)包括通信錄、短信、傳感器或相機,由于鏡像進程為源進程的副本,鏡像進程發(fā)出的RPC調(diào)用請求包括參數(shù)和源進程中的參數(shù)是相同的,參數(shù)包括程序號、程序版本號和過程號,如果鏡像進程通過RPC調(diào)用請求調(diào)用系統(tǒng)服務(wù),操作系統(tǒng)會將響應(yīng)結(jié)果返回給源進程,這樣鏡像進程就無法正常調(diào)用系統(tǒng)服務(wù)。在本發(fā)明實施例中,裝置將鏡像進程發(fā)出的RPC調(diào)用請求包括的第一參數(shù)映射為第二參數(shù),并將映射后的RPC調(diào)用請求發(fā)送至操作系統(tǒng),使操作系統(tǒng)判定出該RPC調(diào)用請求不是由源進程發(fā)出的,而是由其他進程發(fā)出的,這樣可以區(qū)分每個不同的鏡像進程和源進程,以免進程之間發(fā)生沖突。
[0064]示例性的,鏡像進程發(fā)出的RPC調(diào)用請求中包括的第一參數(shù)的格式如下:
[0065]程序號:110
[0066]程序版本號:V4.3.5
[0067]過程號:65123
[0068]裝置將該鏡像進程的第一參數(shù)鏡像映射為第二參數(shù)的格式如下:
[0069]程序號:111
[0070]程序版本號:V4.3.0
[0071]過程號:65123
[0072]裝置將映射后的RPC調(diào)用請求發(fā)送至操作系統(tǒng),由操作系統(tǒng)根據(jù)所述RPC調(diào)用請求返回RPC調(diào)用響應(yīng)。
[0073]需要說明的是S209、S210和S211的執(zhí)行順序不作限制,三個步驟可以安裝任意順序執(zhí)行。
[0074]實施本發(fā)明的實施例,通過接收應(yīng)用程序的啟動指令,若應(yīng)用程序的源進程為已啟動狀態(tài),根據(jù)啟動指令生成鏡像進程,并將鏡像進程重定向到預(yù)設(shè)的第一啟動路徑,讀取第一啟動路徑下的第一啟動配置文件并啟動鏡像進程,鏡像進程的啟動路徑和啟動配置文件與源進程不同,可以是操作系統(tǒng)的互斥機制失效,以達到多實例運行的需求,同時,本發(fā)明實施例不需要多次安裝應(yīng)用程序,能有效的節(jié)省存儲空間。
[0075]參見圖3,為本發(fā)明實施例提供的一種應(yīng)用程序運行多個實例的裝置,在本發(fā)明實施例中,所述裝置包括接收模塊10、重定向模塊11、讀取模塊12和啟動模塊13。
[0076]接收模塊10,用于接收應(yīng)用程序的啟動指令。
[0077]其中,接收模塊10可接收用戶通過鍵盤、鼠標(biāo)或觸摸屏等輸入設(shè)備發(fā)出的啟動指令,用戶可通過觸發(fā)顯示在顯示設(shè)備桌面或二級菜單下的圖標(biāo)生成啟動指令,該圖標(biāo)為指向應(yīng)用程序的啟動入口的快捷方式。例如,用戶通過點擊顯示在觸摸屏上的指向應(yīng)用程序的圖標(biāo),接收模塊10檢測到圖標(biāo)上發(fā)生點擊事件,生成啟動指令,接收模塊10接收到啟動應(yīng)用程序的啟動指令。
[0078]重定向模塊11,用于若所述應(yīng)用程序的源進程為已啟動狀態(tài),根據(jù)所述啟動指令生成所述應(yīng)用程序的鏡像進程,并將所述鏡像進程重定向到預(yù)設(shè)的第一啟動路徑。
[0079]具體的,應(yīng)用程序的源進程指應(yīng)用程序第一次啟動完成后生成的進程,鏡像程序是指源進程啟動完成后再次啟動的進程,可以是第二次啟動或第三次啟動的進程或第N次啟動的進程,N > 2。接收模塊10接收到啟動應(yīng)用程序的啟動指令后,重定向模塊11查詢應(yīng)用程序的源進程是否為已啟動狀態(tài)。查詢的方法可以是:獲取應(yīng)用程序的進程名或進程號PID,查詢操作系統(tǒng)中為已啟動狀態(tài)的進程的進程名或PID是否與所述應(yīng)用程序相同,如果有相同的,表明應(yīng)用程序的源進程為已啟動狀態(tài),如果沒有相同的,表明應(yīng)用程序的源進程為未啟動狀態(tài)。具體實施時可以采用其他方法判斷應(yīng)用程序的源進程是否為已啟動狀態(tài)。如果應(yīng)用程序的源進程為已啟動狀態(tài),重定向模塊11根據(jù)啟動指令生成源進程的鏡像進程,并將鏡像進程重定向預(yù)設(shè)的到第一啟動路徑。由于鏡像進程為源進程的副本,在初始狀態(tài)下,鏡像進程的默認啟動路徑以及默認啟動配置文件和源進程是相同的,如果使用默認啟動路徑下的默認啟動配置文件啟動鏡像進程,會被操作系統(tǒng)的互斥機制識別出來,無法正常啟動鏡像進程。在本發(fā)明的實施例中,重定向模塊11將鏡像進程重定向到預(yù)設(shè)的第一啟動路徑,第一啟動路徑不同于源進程的默認啟動路徑。
[0080]讀取模塊12,用于讀取所述第一啟動路徑下預(yù)設(shè)的第一啟動配置文件。
[0081]其中,預(yù)設(shè)設(shè)置有多個不同的啟動路徑,每個啟動路徑下預(yù)設(shè)設(shè)置有一個啟動配置文件,每個啟動配置文件中的啟動參數(shù)不相同,本發(fā)明實施例所述的第一啟動路徑可以是預(yù)先設(shè)置的多個啟動路徑中的任意一個。當(dāng)鏡像進程需要重定向啟動路徑時,可以根據(jù)鏡像進程的啟動順序依次將預(yù)設(shè)的啟動路徑分配給該鏡像進程,也可以從多個啟動路徑中隨機分配一個啟動路徑給該鏡像進程。需要說明的是,分配給鏡像進程的啟動路徑?jīng)]有被其他進程占用的進程。
[0082]讀取模塊12讀取分配的第一啟動路徑下的第一啟動文件,第一啟動文件中包括應(yīng)用程序的啟動參數(shù),例如,啟動參數(shù)包括但不限于應(yīng)用程序名、進程名和包名。
[0083]啟動模塊13,用于根據(jù)所述第一啟動配置文件啟動所述鏡像進程。
[0084]具體的,啟動模塊13根據(jù)第一啟動配置文件中的啟動參數(shù)啟動鏡像進程,這樣,可以同時運行應(yīng)用程序的源進程和鏡像進程,后續(xù)裝置可以采用上述相同的方法啟動多個鏡像進程,實現(xiàn)了應(yīng)用程序運行多個實例的需求。
[0085]實施本發(fā)明的實施例,通過接收應(yīng)用程序的啟動指令,若應(yīng)用程序的源進程為已啟動狀態(tài),根據(jù)啟動指令生成鏡像進程,并將鏡像進程重定向到預(yù)設(shè)的第一啟動路徑,讀取第一啟動路徑下的第一啟動配置文件并啟動鏡像進程,鏡像進程的啟動路徑和啟動配置文件與源進程不同,可以是操作系統(tǒng)的互斥機制失效,以達到多實例運行的需求,同時,本發(fā)明實施例不需要多次安裝應(yīng)用程序,能有效的節(jié)省存儲空間。
[0086]參見圖4和圖5,為本發(fā)明第二實施例提供的一種應(yīng)用程序運行多個實例的裝置的結(jié)構(gòu)示意圖,在本發(fā)明實施例中,所述裝置除包括接收模塊10、重定向模塊11、讀取取模塊12和啟動模塊13之外,可選的,所述裝置還包括寫操作模塊14 ;可選的,所述裝置還包括讀操作模塊15 ;可選的,所述裝置還包括映射模塊16。
[0087]寫操作模塊14,用于接收到所述鏡像進程發(fā)出的寫操作時,將所述寫操作對應(yīng)的數(shù)據(jù)寫入預(yù)設(shè)的寫存儲區(qū),其中,所述預(yù)設(shè)的寫存儲區(qū)和所述源進程的默認寫存儲區(qū)的位置不相同。
[0088]讀操作模塊15,用于接收到讀取所述鏡像進程的公有文件讀請求時,將所述讀請求重定向到所述源進程,以使所述源進程根據(jù)所述讀請求返回所述公有文件。
[0089]映射模塊16,用于接收到所述鏡像進程發(fā)出的用于調(diào)用系統(tǒng)服務(wù)的遠程過程調(diào)用協(xié)議RPC調(diào)用請求時,將所述RPC調(diào)用請求中的第一參數(shù)映射為第二參數(shù),并將映射后的RPC調(diào)用請求發(fā)送至操作系統(tǒng)的內(nèi)核。
[0090]可選的,啟動模塊13包括:解析單元131、發(fā)送單元132和通知單元133。
[0091]解析單元131,用于解析出所述第一啟動配置文件中的啟動參數(shù)。
[0092]發(fā)送單元132,用于發(fā)送通知消息以通知Zygote服務(wù)進程根據(jù)所述啟動參數(shù)創(chuàng)建所述鏡像進程,其中,所述通知消息中攜帶所述啟動參數(shù)。
[0093]通知單元133,用于通知Dalvik虛擬機對所述鏡像進程進行初始化操作后啟動所述鏡像進程。
[0094]本發(fā)明實施例和方法實施例二屬于同一構(gòu)思,其帶來的技術(shù)效果也相同,具體請參照方法實施例二的描述,此處不再贅述。
[0095]參見圖6,為本發(fā)明實施例第三實施例提供的一種應(yīng)用程序運行多個實例的結(jié)構(gòu)示意圖,如圖6所示,所述裝置1000可以包括:至少一個處理器1001,例如CPU,至少一個網(wǎng)絡(luò)接口 1004,用戶接口 1003,存儲器1005,至少一個通信總線1002。其中,通信總線1002用于實現(xiàn)這些組件之間的連接通信。其中,用戶接口 1003可以包括顯示屏(Display)、鍵盤(Keyboard),可選用戶接口 1003還可以包括標(biāo)準的有線接口、無線接口。網(wǎng)絡(luò)接口 1004可選的可以包括標(biāo)準的有線接口、無線接口(如W1-FI接口)。存儲器1005可以是高速RAM存儲器,也可以是非不穩(wěn)定的存儲器(non-volatile memory),例如至少一個磁盤存儲器。存儲器1005可選的還可以是至少一個位于遠離前述處理器1001的存儲裝置。如圖6所示,作為一種計算機存儲介質(zhì)的存儲器1005中可以包括操作系統(tǒng)、網(wǎng)絡(luò)通信模塊、用戶接口模塊以及應(yīng)用程序。
[0096]在圖6所示的裝置1000中,處理器1001可以用于調(diào)用存儲器1005中存儲的軟件測試應(yīng)用程序,并具體執(zhí)行以下步驟:
[0097]接收應(yīng)用程序的啟動指令;
[0098]若所述應(yīng)用程序的源進程為已啟動狀態(tài),根據(jù)所述啟動指令生成所述應(yīng)用程序的鏡像進程,并將所述鏡像進程重定向到預(yù)設(shè)的第一啟動路徑;
[0099]讀取所述第一啟動路徑下預(yù)設(shè)的第一啟動配置文件;
[0100]根據(jù)所述第一啟動配置文件啟動所述鏡像進程。
[0101]在本發(fā)明的一些實施例中,處理器1001還用于執(zhí)行:
[0102]若所述應(yīng)用程序的源進程為未啟動狀態(tài),根據(jù)所述啟動指令生成所述應(yīng)用程序的所述源進程;
[0103]讀取所述源進程關(guān)聯(lián)的默認啟動路徑下的默認啟動配置文件;
[0104]根據(jù)所述默認啟動配置文件啟動所述源進程。
[0105]在本發(fā)明的一些實施例中,處理器1001還用于執(zhí)行:
[0106]接收到所述鏡像進程發(fā)出的寫請求時,將所述寫請求對應(yīng)的數(shù)據(jù)寫入預(yù)設(shè)的寫存儲區(qū),其中,所述預(yù)設(shè)的寫存儲區(qū)和所述源進程的默認寫存儲區(qū)的位置不相同。
[0107]在本發(fā)明的一些實施例中,處理器1001執(zhí)行所述根據(jù)所述第一啟動配置文件啟動所述鏡像進程包括:
[0108]解析出所述第一啟動配置文件中的啟動參數(shù);
[0109]發(fā)送通知消息以通知Zygote服務(wù)進程根據(jù)所述啟動參數(shù)創(chuàng)建所述鏡像進程,其中,所述通知消息中攜帶所述啟動參數(shù);
[0110]通知Dalvik虛擬機對所述鏡像進程進行初始化操作后啟動所述鏡像進程。
[0111]在本發(fā)明的一些實施例中,處理器1001還用于執(zhí)行:
[0112]接收到讀取所述鏡像進程的公有文件的讀請求時,將所述讀請求重定向到所述源進程,以使所述源進程根據(jù)所述讀請求返回所述公有文件。
[0113]在本發(fā)明的一些實施例中,處理器1001還用于執(zhí)行:
[0114]接收到所述鏡像進程發(fā)出的用于調(diào)用系統(tǒng)服務(wù)的遠程過程調(diào)用協(xié)議RPC調(diào)用請求時,將所述RPC調(diào)用請求中的第一參數(shù)映射為第二參數(shù),并將映射后的RPC調(diào)用請求發(fā)送至操作系統(tǒng)的內(nèi)核。
[0115]實施本發(fā)明的實施例,通過接收應(yīng)用程序的啟動指令,若應(yīng)用程序的源進程為已啟動狀態(tài),根據(jù)啟動指令生成鏡像進程,并將鏡像進程重定向到預(yù)設(shè)的第一啟動路徑,讀取第一啟動路徑下的第一啟動配置文件并啟動鏡像進程,鏡像進程的啟動路徑和啟動配置文件與源進程不同,可以是操作系統(tǒng)的互斥機制失效,以達到多實例運行的需求,同時,本發(fā)明實施例不需要多次安裝應(yīng)用程序,能有效的節(jié)省存儲空間。
[0116]本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random AccessMemory, RAM)等。
[0117]以上所揭露的僅為本發(fā)明一種較佳實施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。
【權(quán)利要求】
1.一種應(yīng)用程序運行多個實例的方法,其特征在于,包括: 接收應(yīng)用程序的啟動指令; 若所述應(yīng)用程序的源進程為已啟動狀態(tài),根據(jù)所述啟動指令生成所述應(yīng)用程序的鏡像進程,并將所述鏡像進程重定向到預(yù)設(shè)的第一啟動路徑; 讀取所述第一啟動路徑下預(yù)設(shè)的第一啟動配置文件; 根據(jù)所述第一啟動配置文件啟動所述鏡像進程。
2.如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述第一啟動配置文件啟動所述鏡像進程之后,還包括: 接收到所述鏡像進程發(fā)出的寫請求時,將所述寫請求對應(yīng)的數(shù)據(jù)寫入預(yù)設(shè)的寫存儲區(qū),其中,所述預(yù)設(shè)的寫存儲區(qū)和所述源進程的默認寫存儲區(qū)的位置不相同。
3.如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述第一啟動配置文件啟動所述鏡像進程包括: 解析出所述第一啟動配置文件中的啟動參數(shù); 發(fā)送通知消息以通知Zygote服務(wù)進程根據(jù)所述啟動參數(shù)創(chuàng)建所述鏡像進程,其中,所述通知消息中攜帶所述啟動參數(shù); 通知Dalvik虛擬機對所述鏡像進程進行初始化操作后啟動所述鏡像進程。
4.如權(quán)利要求1或2所述的方法,其特征在于,還包括: 接收到讀取所述鏡像進程的公有文件的讀請求時,將所述讀請求重定向到所述源進程,以使所述源進程根據(jù)所述讀請求返回所述公有文件。
5.如權(quán)利要求1或2所述的方法,其特征在于,還包括: 接收到所述鏡像進程發(fā)出的用于調(diào)用系統(tǒng)服務(wù)的遠程過程調(diào)用協(xié)議RPC調(diào)用請求時,將所述RPC調(diào)用請求中的第一參數(shù)映射為第二參數(shù),并將映射后的RPC調(diào)用請求發(fā)送至操作系統(tǒng)的內(nèi)核。
6.一種應(yīng)用程序運行多個實例的裝置,包括: 接收模塊,用于接收應(yīng)用程序的啟動指令; 重定向模塊,用于若所述應(yīng)用程序的源進程為已啟動狀態(tài),根據(jù)所述啟動指令生成所述應(yīng)用程序的鏡像進程,并將所述鏡像進程重定向到預(yù)設(shè)的第一啟動路徑; 讀取模塊,用于讀取所述第一啟動路徑下預(yù)設(shè)的第一啟動配置文件; 啟動模塊,用于根據(jù)所述第一啟動配置文件啟動所述鏡像進程。
7.如權(quán)利要求6所述的裝置,其特征在于,還包括: 寫操作模塊,用于接收到所述鏡像進程發(fā)出的寫操作時,將所述寫操作對應(yīng)的數(shù)據(jù)寫入預(yù)設(shè)的寫存儲區(qū),其中,所述預(yù)設(shè)的寫存儲區(qū)和所述源進程的默認寫存儲區(qū)的位置不相同。
8.如權(quán)利要求7所述的裝置,其特征在于,所述啟動模塊包括: 解析單元,用于解析出所述第一啟動配置文件中的啟動參數(shù); 發(fā)送單元,用于發(fā)送通知消息以通知Zygote服務(wù)進程根據(jù)所述啟動參數(shù)創(chuàng)建所述鏡像進程,其中,所述通知消息中攜帶所述啟動參數(shù); 通知單元,用于通知Dalvik虛擬機對所述鏡像進程進行初始化操作后啟動所述鏡像進程。
9.如權(quán)利要求6所述的裝置,其特征在于,還包括: 讀操作模塊,用于接收到讀取所述鏡像進程的公有文件讀請求時,將所述讀請求重定向到所述源進程,以使所述源進程根據(jù)所述讀請求返回所述公有文件。
10.如權(quán)利要求6所述的裝置,其特征在于,還包括: 映射模塊,用于接收到所述鏡像進程發(fā)出的用于調(diào)用系統(tǒng)服務(wù)的遠程過程調(diào)用協(xié)議RPC調(diào)用請求時,將所述RPC調(diào)用請求中的第一參數(shù)映射為第二參數(shù),并將映射后的RPC調(diào)用請求發(fā)送至操作系統(tǒng)的內(nèi)核。
11.一種終端,其特征在于,包括如權(quán)利要求6-10任意一項所述的裝置。
【文檔編號】G06F9/445GK104375857SQ201410566774
【公開日】2015年2月25日 申請日期:2014年10月22日 優(yōu)先權(quán)日:2014年10月22日
【發(fā)明者】班五三, 劉峰, 周強, 張?zhí)? 申請人:騰訊科技(深圳)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1