分屏運行應用的方法及裝置與流程
2023-09-12 20:05:55 1

本申請涉及軟體技術領域,尤其涉及一種分屏運行應用的方法及裝置。
背景技術:
目前,手機、平板電腦等電子設備的架構一般包括:硬體、作業系統、框架層、應用層。框架層主要負責接收用戶的輸入事件、進行處理以及將處理的結果通過文字、圖像、聲音、震動等形式反饋給用戶。隨著電子設備的處理能力越來越強,電子設備可以支持多個應用同時工作,但是現有框架層一般使用同一堆棧管理所有應用的數據,導致較難區分不同分屏,所以在同一屏幕上只有一個應用可以獲得焦點,能夠接收用戶的輸入事件,和用戶交互;而其他應用在後臺運行,無法和用戶交互。現有技術存在一些分屏技術方案,主要是通過對框架層的數據結構進行修改,將原來使用同一堆棧進行數據管理的數據結構,改成使用不同堆棧分別管理不同分屏數據的數據結構,以便於實現同屏多任務多窗口運行。
上述實現多任務多窗口運行的方案需要對堆棧的數據結構進行修改,工作量較大,實現起來較為困難,且很容易引入新的漏洞(bug)。針對該問題,亟需一種不用改動堆棧的數據結構即可分屏運行應用的方案。
技術實現要素:
本申請的多個方面提供一種分屏運行應用的方法及裝置,用以在不修改框架層的數據結構的基礎上,實現分屏運行應用的目的。
本申請的一方面,提供一種分屏運行應用的方法,包括:
接收用於指示分屏運行應用程式的分屏指令;
根據所述分屏指令,為所述應用程式設置分屏標記;
根據所述分屏標記,分屏運行所述應用程式。
本申請的另一方面,提供一種分屏運行應用的裝置,包括:
接收模塊,用於接收用於指示分屏運行應用程式的分屏指令;
標記模塊,用於根據所述分屏指令,為所述應用程式設置分屏標記;
分屏模塊,用於根據所述分屏標記,分屏運行所述應用程式。
在本申請中,接收用於指示分屏運行應用程式的分屏指令,根據該分屏指令,為應用程式設置分屏標記,根據分屏標記,分屏運行應用程式。由於通過分屏標記可以標記出需要分屏運行的應用程式,所以不需要修改框架層改動堆棧的數據結構,便可以達到分屏運行應用程式的目的。
【附圖說明】
為了更清楚地說明本發明實施例中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本申請一實施例提供的分屏運行應用的方法的流程示意圖;
圖2為本申請一實施例提供的側邊欄的示意圖;
圖3為本申請一實施例提供的分屏預覽界面的示意圖;
圖4為本申請一實施例提供的AMS的數據結構示意圖;
圖5為本申請一實施例提供的WMS的數據結構示意圖;
圖6a為本申請一實施例提供的整體UML圖;
圖6b為本申請一實施例提供的基於UML圖實現的分屏運行應用程式的流程示意圖;
圖7為本申請一實施例提供的分屏運行應用的裝置的結構示意圖。
【具體實施方式】
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
針對現有技術存在的問題,本申請提供一種分屏運行應用的方法,可以在不修改堆棧的數據結構的基礎上,實現分屏運行應用程式的目的。圖1為本申請一實施例提供的分屏運行應用的方法的流程示意圖。該方法可由框架層來執行,但不限於此。如圖1所示,該方法包括:
101、接收用於指示分屏運行應用程式的分屏指令。
102、根據上述分屏指令,為應用程式設置分屏標記。
103、根據上述分屏標記,分屏運行應用程式。
在本實施例中,當需要分屏運行應用程式時,可以發出分屏指令,用來指示分屏運行應用程式。本實施例對發出分屏指令的方式不做限定。
例如,可以向用戶提供一分屏啟動入口,用於供用戶發出用於啟動應用程式的啟動指令,通過該分屏啟動入口發出的啟動指令,實際上指示分屏運行該應用程式。基於此,上述分屏指令具體可以是用戶通過分屏啟動入口發出的用於啟動應用程式的啟動指令。
上述分屏啟動入口可以有各種實現方式,例如可以是設置於屏幕上的側邊欄應用。如圖2所示屏幕的左側部分為側邊欄,在該側邊欄中預先設置有支持分屏運行的各種應用的圖標,例如便籤、視頻、相冊、信息和瀏覽器等應用的圖標。例如,通過點擊圖2中側邊欄的圓弧可以隱藏或顯示側邊欄,或長時間不操作已顯示的側邊欄會動態自己隱藏,只保留圓弧在主屏幕上, 但不限於這種方式。例如,還可以通過操作各種物理鍵來顯示或隱藏側邊欄。
例如,用戶可以通過拖動某個應用的圖標至主屏幕(圖2中的右側部分)上,從而實現通過該側邊欄發出用於指示分屏運行該應用的啟動指令。或者,用戶也可以通過點擊、觸控、懸停等方式操作側邊欄中某個應用的圖標,從而實現通過該側邊欄發出用於指示分屏運行該應用的啟動指令。
或者,上述分屏啟動入口可以是分屏預覽界面,分屏預覽界面可以是一個或多個。如圖3所示,主屏幕上的兩個實線框為分屏預覽界面。例如,用戶可以通過長按Home按鈕調出或隱藏分屏預覽界面,或者用戶可以通過長按開機鍵或音量調節鍵調出或隱藏分屏預覽界面。值得說明的是,這裡長按各種按鍵的操作可以通過長按時間與已有長按操作相區分。
例如,用戶可以通過拖動某個應用的圖標至分屏預覽界面上,從而實現通過該分屏預覽界面發出用於指示分屏運行該應用的啟動指令。或者,用戶可以點擊分屏預覽界面上的添加符號,如「+」,來添加某個應用到分屏預覽界面上,從而實現通過該分屏預覽界面發出用於指示分屏運行該應用的啟動指令。
以Android系統為例,無論是側邊欄還是分屏預覽界面,都可以調用Android系統提供的應用程式接口(API),如context.startActivity發出分屏指令。context.startActivity用來啟動一個頁面(Activity)。
框架層接收到分屏指令後,可以根據分屏指令,為需要分屏運行的應用程式設置分屏標記,通過該分屏標記一方面可以標識該應用程式需要分屏,另一方面可以與其他分屏相區分。由於框架層主要負責與用戶之間的交互,負責對用戶界面進行處理,因此,框架層為應用程式設置分屏標記,實際上是為應用程式在框架層的數據設置分屏標記,這樣可以了解到該應用程式需要分屏運行並且可以將該應用程式對應的分屏與其他分屏相區分。
在一可選實施方式中,框架層通過任務鍊表(TaskRecord)來管理應用程式,基於此,框架層根據分屏指令,為應用程式設置分屏標記的過程包括:根據分屏指令,在應用程式的任務鍊表中設置分屏標記,該任務鍊表對應於 應用程式需要分屏展示的頁面。即通過該任務鍊表可以確定應用程式需要分屏展示的頁面。例如,任務鍊表可以存儲應用程式的頁面記錄(ActivityRecord)。ActivityRecord也只存在框架層,用於存儲應用程式需要分屏展示的頁面的基本信息。頁面的基本信息一般包括:該頁面的名稱、該頁面所屬的應用程式的標識等。
例如,以Android系統為例,在框架層的活動管理服務(ActivityManagerService,AMS)中,如圖4所示,該AMS包括一個頁面堆棧管理器(ActivityStackSuperVior),該ActivityStackSuperVior通過頁面堆棧(ActivityStack)管理多個TaskRecord,每個TaskRecord包括多個ActivityRecord,即每個ActivityRecord都屬於一個TaskRecord,每個ActivityRecord負責管理應用程式的一個頁面(Activity),即應用程式的內個Activity都對應有一個ActivityRecord。
另外,在框架層的窗口管理服務(WindowManagerService,WMS)中也有類似的結構。如圖5所示,該WMS包括一個任務堆棧(TaskStack),該TaskStack包括多個任務(Task),每個Task對應多個應用窗口令牌(AppWindowToken)。WMS裡的任務堆棧(TaskStack)對應圖4所示AMS中的頁面堆棧(ActivityStack),這兩者及其子結構保持同步。也就是說,WMS和AMS中的數據結構是有對應關係的,例如AMS中的TaskRecord對應於WMS中的Task,AMS中的ActivityRecord對應於WMS中的AppWindowToken。另外,WMS中TaskStack的mTasks需要和AMS中ActivityStack的mTaskHistory順序保持一致。
上述ActivityRecord主要用於描述單個Activity,是ActivityStack中的基本單元;ActivityRecord的IBinder對象可以表示為ActivityRecord::Token,可以看作遠程對象的本地句柄,可用於LPC,又可用來作映射中的唯一標識(unique ID),經常是兩用的。
上述TaskRecord中的mActivities是ActivityRecord的列表,它們是按照歷史順序排序的。ActivityRecord是通過TaskRecord這一層間接地被管 理著。
上述ActivityStackSupervisor是ActivityStack的管理者。
基於Android系統框架層對應用程式需要展示的頁面的管理,可以通過TaskRecord來標識一個應用程式,將分屏標記設置在TaskRecord中,達到標記和區分應用程式的分屏的目的。
應用程式需要分屏展示的頁面一般包括首頁面(main Activity)和非首頁面。首頁面是指首個要展示的頁面。根據要分屏展示的頁面類型的不同,在應用程式的任務鍊表中設置分屏標記的過程也會有所不同。則一種設置分屏標記的具體實施方式包括:
當需要分屏展示的頁面是首頁面時,由於是該應用程式的首個頁面,尚不存在任務鍊表,故需要為該首頁面創建任務鍊表,根據分屏指令,獲得分屏標記,將分屏標記設置在所創建的任務鍊表中;另外,還需要為該首頁面創建頁面鍊表,該頁面鍊表位於任務鍊表中,並且需要將該首頁面的基本信息存儲到頁面鍊表中;
當需要分屏展示的頁面是非首頁面時,若該非首頁面不與首頁面共用任務鍊表,則為該非首頁面創建一新任務鍊表,從應用程式對應的已存在的任務鍊表(這裡已存在的任務鍊表可以是首頁面對應的任務鍊表,也可以是之前不與首頁面共用任務鍊表的非首頁面對應的任務鍊表)中獲取分屏標記,將分屏標記設置在新任務鍊表中;另外,還需要為該非首頁面創建頁面鍊表,該頁面鍊表位於所創建的新任務鍊表中,並且需要將該非首頁面的基本信息存儲到頁面鍊表中;若該非首頁面與首頁面共用任務鍊表,由於首頁面對應的任務鍊表中已經存在分屏標記,所以只需為該非首頁面創建頁面鍊表,將該非首頁面的基本信息存儲到頁面鍊表中即可。
在一可選實施方式中,分屏指令中可以包括分屏標記。基於此,上述根據分屏指令,獲得分屏標記具體可以是:從分屏指令中獲取分屏標記。以Android系統為例,在通過調用Android系統提供的context.startActivity接口發出分屏指令時,具體可以通過調用context.startActivity接口發出意圖 (intent)消息,該消息中添加分屏標記。
或者,分屏指令中不攜帶分屏標記,而是由框架層自己根據分屏指令,為不同應用程式生成分屏標記。例如,框架層直接將分屏指令作為分屏標記。
在為應用程式設置分屏標記後,在應用程式的整個運行過程中,框架層就可以根據該分屏標記,獲知該應用程式需要分屏運行,且可以將該應用程式與其他應用程式對應的分屏區分開,從而實現分屏運行應用程式的目的。
在一可選實施方式中,框架層根據分屏標記,分屏運行應用程式具體為:根據分屏標記,為應用程式設置分屏窗口的分屏參數,這裡的分屏參數主要用於指示分屏窗口的大小及位置,具體的,分屏參數可以包括分屏窗口在整個屏幕上的左上角坐標、寬度以及高度等信息;將分屏窗口的分屏參數提供給應用程式,以供應用程式根據分屏參數將需要分屏展示的頁面展示在分屏窗口中。
在一可選實施方式中,可以預先設置分屏標記的取值,不同取值對應不同的分屏個數,例如分屏標記取值為2,意味著需要分為兩屏;分屏標記取值為3,意味著需要分為三屏;分屏標記取值為4,意味著需要分屏4屏。可選的,每一屏上可以運行一個應用程式,或者也可以同時運行多個應用程式。每一屏的使用模式也可以預先設定。
基於上述,一種根據分屏標記,為應用程式設置分屏窗口的分屏參數的實施方式包括:根據分屏標記,將整個屏幕劃分為至少兩個子屏幕,具體,可以根據分屏標記的取值確定所劃分的子屏幕的個數;確定該應用程式的分屏窗口所在的目標子屏幕;根據目標子屏幕的屏幕參數,設置分屏窗口的分屏參數。例如,預先設定子屏幕的使用順序,根據該使用順序來確定當前應用程式對應的分屏窗口所在的子屏幕。或者,也可以隨機選擇有位置的子屏幕作為當前應用程式對應的分屏窗口所在的子屏幕。值得說明的是,子屏幕的屏幕參數主要用於指示該子屏幕的大小及位置。
可選的,若一個子屏幕上運行一個應用程式,則一個子屏幕可以直接作為一個分屏窗口,但不限於此。在獲得應用程式的分屏窗口的分屏參數後, 框架層具體可以向應用程式發送第一消息,以通知應用程式準備需要分屏展示的頁面;向應用程式發送第二消息,第二消息包括分屏窗口的分屏參數,以供應用程式確定分屏窗口;對應用程式來說,接收框架層發送的第一消息,根據第一消息準備需要分屏展示的頁面,並接收框架層發送的第二消息,從第二消息中獲取分屏參數,根據分屏參數確定分屏窗口在屏幕上的位置,進一步當準備好需要分屏展示的頁面後,向框架層發送消息,以通知框架層已經準備好頁面;框架層在接收到應用程式發送的用於通知準備好頁面的消息後,向應用程式發送第三消息,以指示應用程式將準備好的頁面展示在分屏窗口中。
以Android系統為例,在Android系統中,應用程式的每個Activity都關聯一個窗口(Window)對象,這個Window對象的繼承類是com.android.internal.policy.impl.PhoneWindow,該Window對象的繼承類提供了一個setAttributes(WindowManager.LayoutPrams)方法,該方法可以對Activity屬性做一些設置,例如可以設置Activity屬性中的左上角坐標(x,y)、寬度(width)、高度(height)等參數。基於此,應用程式可以調用該方法設置Activity的左上角坐標、寬度、高度,從而讓一個Activity只佔據分屏窗口所在區域,而讓其他Activity佔據屏幕的其餘區域,這樣應用程式就可以將準備好的頁面展示在分屏窗口中,進而實現應用分屏運行的目的。
在一可選實施方式中,應用程式除了需要分屏展示頁面之外,還可能需要展示各種對話框。基於此,框架層還可以在應用程式對應的分屏窗口中展示應用程式的對話框。
具體的,當應用程式需要展示對話框時,確定該對話框關聯於分屏窗口當前展示的頁面;根據分屏窗口的分屏參數,確定對話框的大小及彈出位置;根據對話框的大小及彈出位置,在分屏窗口上彈出對話框。具體的,可以將對話框對應的窗口容器(Container)的大小限制為關聯的分屏窗口的大小,對話框最大只能顯示成窗口容器大小,可以比窗口容器小,如果對話框更小,那就正常顯示,不充滿窗口容器。
在一可選實施方式中,若申請分屏運行的應用程式是首個運行的應用,那麼可以採用全屏方式,以提高屏幕利用率。基於此,在為應用程式設置分屏標記之前,可以判斷應用程式是否是首個運行的應用,若判斷結果為是,則禁止將分屏標記設置在任務鍊表中,從而禁止為該應用程式設置分屏標記;若判斷結果為否,則將分屏標記設置到任務鍊表中,從而達到分屏運行應用程式的目的。值得說明的是,對於判斷結果為否的情況,還需要向其他已經運行的應用程式發送包含所述其他已經運行的應用程式對應的分屏參數的消息,以使其他應用程式根據該分屏參數將需要展示的頁面展示在其他應用程式對應的其他分屏窗口中。
由上述可見,本實施例通過接收用於指示分屏運行應用程式的分屏指令,根據分屏指令,為應用程式設置分屏標記,根據分屏標記,分屏運行應用程式。由於通過分屏標記可以標記出需要分屏運行的應用程式,所以不需要修改框架層的數據結構,便可以達到分屏運行應用程式的目的。另外,通過對單個頁面對應的分屏窗口的大小及位置進行控制,具有更大的自由度,使得分屏方案更加靈活。
下面以Android系統為例,詳細說明本申請技術方案的實施過程。如圖6a所示,為本申請的整體統一建模語言(Unified Modeling Language,UML)圖。本申請的UML圖包括:應用程式部分、分屏入口部分和框架層。應用程式部分包括:組件調節器(ActivityThread)、窗口調節器(WindowScalor)和頁面(Activity),WindowScalor是一個控制Activity縮放的工具;分屏入口部分包括:多窗口控制器(MultiWindowController)、多窗口管理器(MultiWindowManager)和多窗口管理服務(MultiWindowManagerService);框架層包括:堆棧管理器(ActivityStackSuperVior)、頁面堆棧(ActivityStack)、任務鍊表(TaskRecord)、頁面記錄(ActivityRecord)和浮動窗口層(FloatWindowLayor)。圖6b所示為基於UML圖實現的分屏運行應用程式的流程。對該流程的詳細說明如下:
用戶通過終端設備上的分屏啟動入口(例如側邊欄或分屏預覽界面)調用Android系統提供的context.startActivity接口,向Android系統中的框架層(這裡的框架層主要是指圖6b中的ActivityStackSuperVior)發送intent消息,並在該intent消息中添加一分屏標記,記為flag,用於在向框架層發出啟動應用程式的指令的同時,指示分屏運行該應用程式。
考慮到運行第一個應用程式時,一般會進入全屏狀態,而不是分屏,這樣有利於提高屏幕利用率。基於此,框架層收到context.startActivity接口傳輸的intent消息後,進入啟動頁面(StartActivityLocked)流程,並需要判斷是否需要移除intent消息中的flag,於是啟動判斷是否需要移除intent消息中的flag的流程,該流程可記為startActivityUncheckedLocked。該操作主要有圖6b中的ActivityStackSuperVior指示ActivityStack來完成。值得說明的是,上述流程中的」Locked」只是為了提示該方法流程是線程安全的,Locked本身沒有具體意義。
具體的,框架層(主要是指ActivityStack)根據該應用程式是否是首個請求運行的應用,來確定是否要移除flag(removeFloatFlagIfNeeded),如果是首個請求運行的應用,則需要移除,如果不是首個請求運行的應用,則不移除。如果需要進入全屏狀態,則把被桌面擋住的頁面都先清空(finishNoneFloatAcitivityUnderHome),以便於全屏運行應用程式。如果需要進入分屏狀態,則確定需要根據flag,設置分屏窗口的分屏參數。於是,進入框架層默認的啟動Activity的流程。
對於應用的首頁面(main Activity),首先新建一個TaskRecord,此時,TaskRecord的構造函數會從intent消息裡面取數據,由於intent消息裡面包含分屏標記,即flag,因此會獲取flag將其存到TaskRecord裡面,這樣該TaskRecord就會被標記為需要分屏。TaskRecord處理好後,ActivityStack會指示ActivitySupervisor進入ActivitySupervisor的真正啟動頁面(realStartActivityLocked)流程。
在realStartActivityLocked流程中,框架層會請求應用程式準備需要展 示的頁面,具體向應用程式發送第一消息,以請求應用程式準備需要展示的頁面;進一步,向應用程式發送第二消息,通過第二消息將分屏窗口的分屏參數傳遞給應用程式,以供應用程式確定分屏窗口;當應用程式準備好頁面後,向框架層發送通知消息,框架層收到通知消息後,向應用程式發送第三消息,以指示應用程式將準備好的頁面展示在分屏窗口中。對應用程式來說,在接收到第三消息後,可以設置main Activity的大小,以使其與分屏窗口相適宜。該過程主要可由圖6b中的ActivitySupervisor、ActivityRecord、ActivityThread、WindowScalor和Activity幾部分完成。
具體的,應用程式可以調用FloatWindowLayor.layoutActivityRecord,構造一個LayoutParams對象並對LayoutParams對象的左上角坐標(x,y)、寬度(width)、高度(height)等屬性賦值。
在此處,FloatWindowLayor.layoutActivityRecord的主要功能是設置main Activity的位置,具體將其位置定位到分屏窗口處。然後,應用程調用main Activity的setAttributes(WindowManager.LayoutPrams)方法設置main Activity的屬性。
對於非main Activity,如果該非main Activity與main Activity是共享同一個TaskRecord,由於flag已經存在TaskRecord裡面了,因此,可以直接realStartActivityLocked流程,並且在realStartActivityLocked流程中,應用程式也會將非main Activit設置成與main Activity一樣的大小。
對於非main Activity,如果非main Activity與main Activity不共享同一個TaskRecord,需要查找是否已經存在該應用程式的其他Activity對應的TaskRecord,具體可以判斷是否存在TaskRecord對應的包名(packageName)與該應用程式的包名相同,若存在,則則取該TaskRecord中的flag設置到當前非main Activity的TaskRecord中,保證非main Activity與main Activity對應相同的flag。之後,進入realStartActivityLocked流程,並且在realStartActivityLocked流程中,應用程式也會將非main Activit設置成與main Activity一樣的大小。
由上述可見,本申請通過為應用程式設置分屏標記,根據分屏標記,分屏運行應用程式。由於通過分屏標記可以標記出需要分屏運行的應用程式,所以不需要修改框架層的數據結構,便可以達到分屏運行應用程式的目的。
需要說明的是,對於前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本申請並不受所描述的動作順序的限制,因為依據本申請,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬於優選實施例,所涉及的動作和模塊並不一定是本申請所必須的。
在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
圖7為本申請一實施例提供的分屏運行應用的裝置的結構示意圖。如圖7所示,該裝置包括:接收模塊71、標記模塊72和分屏模塊73。
接收模塊71,用於接收用於指示分屏運行應用程式的分屏指令;
標記模塊72,用於根據分屏指令,為應用程式設置分屏標記;
分屏模塊73,用於根據分屏標記,分屏運行應用程式。
在一可選實施方式中,標記模塊72具體用於:
根據分屏指令,在應用程式的任務鍊表中設置分屏標記,任務鍊表對應於應用程式需要分屏展示的頁面。
在一可選實施方式中,標記模塊72具體用於:
當需要分屏展示的頁面是首頁面時,為首頁面創建任務鍊表,根據分屏指令,獲得分屏標記,將分屏標記設置在任務鍊表中;
當需要分屏展示的頁面是非首頁面時,若非首頁面不與首頁面共用任務鍊表,則為非首頁面創建一新任務鍊表,從應用程式對應的已存在的任務鍊表中獲取分屏標記,將分屏標記設置在新任務鍊表中。
在一可選實施方式中,標記模塊72具體用於:
從分屏指令中獲取分屏標記;或者
根據分屏指令,生成分屏標記。
在一可選實施方式中,分屏模塊73具體用於:
根據分屏標記,為應用程式設置分屏窗口的分屏參數;
將分屏參數提供給應用程式,以供應用程式根據分屏參數將頁面展示在分屏窗口中。
在一可選實施方式中,分屏模塊73具體用於:
向應用程式發送第一消息,以通知應用程式準備頁面;
向應用程式發送第二消息,第二消息包括分屏參數,以供應用程式確定分屏窗口;
在接收到應用程式發送的用於通知準備好頁面的消息後,向應用程式發送第三消息,以指示應用程式將頁面展示在分屏窗口中。
在一可選實施方式中,分屏模塊73具體用於:
根據分屏標記,將整個屏幕劃分為至少兩個子屏幕;
確定分屏窗口所在的目標子屏幕;
根據目標子屏幕的屏幕參數,設置分屏窗口的分屏參數。
在一可選實施方式中,分屏模塊73還用於:
在分屏窗口中展示應用程式的對話框。
在一可選實施方式中,分屏模塊73具體用於:
當應用程式需要展示對話框時,確定對話框關聯於分屏窗口當前展示的頁面;
根據分屏窗口的分屏參數,確定對話框的大小及彈出位置屬性參數;
根據對話框的大小及彈出位置,在分屏窗口中彈出對話框。
在一可選實施方式中,本實施例的裝置還包括,判斷模塊,用於判斷應用程式是否是首個運行的應用;若判斷結果為是,則禁止標記模塊將分屏標記設置到任務鍊表中;若判斷結果為否,則觸發標記模塊將分屏標記設置到任務鍊表中。
可選的,上述分屏指令為用戶通過分屏啟動入口發出的用於啟動應用程式的啟動指令。
本實施例提供的裝置,接收用於指示分屏運行應用程式的分屏指令,根據分屏指令,為應用程式設置分屏標記,根據分屏標記,分屏運行應用程式。由於通過分屏標記可以標記出需要分屏運行的應用程式,所以不需要修改框架層的數據結構,便可以達到分屏運行應用程式的目的。
所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統,裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在本發明所提供的幾個實施例中,應該理解到,所揭露的系統,裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用硬體加軟體功能單元的形式實現。
上述以軟體功能單元的形式實現的集成的單元,可以存儲在一個計算機可讀取存儲介質中。上述軟體功能單元存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)或處理器(processor)執行本發明各個實施例所述方法的部分步驟。而前述的存儲介質包括:U盤、移動硬碟、只讀存儲器(Read-Only Memory,ROM)、 隨機存取存儲器(Random Access Memory,RAM)、磁碟或者光碟等各種可以存儲程序代碼的介質。
最後應說明的是:以上實施例僅用以說明本發明的技術方案,而非對其限制;儘管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本發明各實施例技術方案的精神和範圍。