[發明專利]一種智能終端應用切換方法有效
| 申請號: | 201611218456.0 | 申請日: | 2016-12-26 |
| 公開(公告)號: | CN106648869B | 公開(公告)日: | 2019-06-14 |
| 發明(設計)人: | 肖劍鋒 | 申請(專利權)人: | 競技世界(北京)網絡技術有限公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48;G06F3/0481;G06F3/0488;G06F3/0489 |
| 代理公司: | 北京冠和權律師事務所 11399 | 代理人: | 朱健;陳國軍 |
| 地址: | 100085 北京市懷*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 智能 終端 應用 切換 方法 | ||
1.一種適用于Android5.0以下系統版本的智能終端應用切換方法,其特征在于:
S501:啟動切換函數,獲取代表系統版本的整型常量android.os.Build.VERSION.SDK_INT,判斷其值是否小于21,當小于21時啟動對應的切換函數;
S502:定義兩個列表,一個為最近應用列表(recentTasks),另一個為可用最近應用列表(availableRecentTasks);列表中的元素類型為RecentTaskInfo:定義兩個列表類型的變量recentTasks和availableRecentTasks,列表類型為ArrayList<RecentTaskInfo>,列表每個元素為RecentTaskInfo類型的變量;其中最近應用列表(recentTasks)用于存儲最近應用;可用最近應用列表(availableRecentTasks)用于存儲經過過濾后的合適的后臺進程應用;
S503:調用ActivityManager界面管理器的getRunningAppProcesses方法獲取到正在運行的進程信息,生成一個臨時進程列表:ActivityManager界面管理器中的getRunningAppProcesses方法能夠返回當前系統正在運行的進程信息;所述臨時進程列表每個元素為RunningAppProcessInfo類型的變量,它存儲有每個進程的詳細信息,詳細信息包括進程名稱,進程ID,用戶ID;
S504:輪詢臨時進程列表,將臨時進程列表中的元素依次導入一個HashMap類型的變量mapInfo中:定義一個HashMap<String, RunningAppProcessInfo>類型的HashMap,命名為mapInfo;使用循環的方式,依次輪詢通過getRunningAppProcesses方法返回的臨時進程列表,將臨時進程列表的每個元素和對應的包名相對應,存儲到HashMap 變量mapInfo中,其中包名為對應的key值,RunningAppProcessInfo元素為value值;
S505:調用ActivityManager界面管理器的getRecentTasks(3,2),得到最近打開的3個應用程序,并將經過過濾后的合適的后臺進程應用保存到最近應用列表(recentTasks)中:通過ActivityManager界面管理器的getRecentTasks(3,2)得到最近打開的3個應用程序;將最近打開的3個應用程序中不可用的應用過濾掉,將經過過濾后的合適的后臺進程應用保存到最近應用列表(recentTasks)中;
S506:使用循環,輪詢最近應用列表(recentTasks):使用循環,開始輪詢最近應用列表(recentTasks),依次取出每個元素;循環結束,則執行S5018;否則執行S507;
S507:獲取當前元素,每個元素是RecentTaskInfo類型的,這個類型保存有運行進程的詳細信息,根據元素baseIntent屬性獲取到對應后臺進程應用的Intent:每個元素為RecentTaskInfo類型的數據,它存儲有每個后臺進程應用的詳細信息;通過baseIntent屬性獲取啟動后臺進程應用的Intent,通過獲得的啟動后臺進程應用的Intent可以將后臺進程應用切換到前臺;
S508:判斷后臺進程應用的Intent是否為空,如果為空則執行S509,如果不為空則繼續執行S5010;
S509:繼續循環,取最近應用列表(recentTasks)的下一個元素:如果后臺進程應用的Intent不合理,則需要跳過此輪循環,然后獲取最近應用列表(recentTasks)的下一個元素,繼續進行輪詢;
S5010:判斷后臺進程應用的Intent對應的后臺進程應用是否為桌面應用:如果后臺進程應用為桌面應用,需要將其過濾掉,返回S509,如果后臺進程應用不為桌面應用,則繼續執行S5011;
S5011:根據后臺進程應用的Intent獲取對應后臺進程應用的包名packageName和ComponentName組件對象:如果后臺進程應用的Intent不為空,對應的后臺進程應用也不是桌面應用,則通過getComponent() 方法獲取到后臺進程應用的Intent對應的ComponentName組件對象,ComponentName是實現了Parcelable的一個類,其中保存有包名和啟動類的類名信息;
S5012:判斷后臺進程應用的Intent對應的ComponentName組件對象是否為空,如果為空,將后臺進程應用過濾掉,返回S509,如果不為空則繼續執行S5013;
S5013:根據包名packageName查詢HashMap變量mapInfo,得到每個包名對應的RunningAppProcessInfo進程詳情對象:如果后臺進程應用的Intent對應的ComponentName組件對象不為空,獲取后臺進程應用的Intent對應的ComponentName組件對象存儲的包名,然后通過存儲的包名查詢之前建立的HashMap變量mapInfo,找到包名對應的RunningAppProcessInfo 類型的元素,獲取到包名對應的RunningAppProcessInfo進程詳情對象;
S5014:判斷包名對應的RunningAppProcessInfo進程詳情對象是否為空:對得到的包名對應的RunningAppProcessInfo進程詳情對象進行是否為空的判斷,如果為空,則返回S509取下一個元素繼續循環,不為空則表示是一個實體進程詳情對象,繼續執行S5015;
S5015:判斷包名對應的RunningAppProcessInfo進程是否是一個有效的進程: 繼續判斷包名對應的RunningAppProcessInfo進程是否為有效的進程;判斷通過對應的ComponentName組件對象能否進一步查詢得到界面的ActivityInfo信息數據,如果能夠查詢得到,則表示包名對應的RunningAppProcessInfo進程為一個有效的進程,繼續執行S5016;否則返回S509取下一個元素繼續循環;
S5016:判斷可用最近應用列表(availableRecentTasks)大小是否小于3,如果是,則執行S5017;如果否,則繼續執行S5018;
S5017:如果滿足可用最近應用列表(availableRecentTasks)元素個數小于3個的要求,將一個有效的進程添加到可用最近應用列表(availableRecentTasks)中,返回S509;
S5018:跳出或正常結束循環:最近應用列表(recentTasks)輪詢完成,或者可用最近應用列表(availableRecentTasks)已經取到了兩個元素,退出循環,不再輪詢;執行S5019;
S5019:判斷可用最近應用列表(availableRecentTasks)的元素個數是否為0;如果為0,則執行S5030提示用戶“無可切換應用”,說明沒有后臺進程應用可以進行切換,然后退出函數,結束切換;如果不為0,則執行S5020;
S5020:判斷可用最近應用列表(availableRecentTasks)的元素個數是否大于1:如果否,則執行S5021;如果是,則執行S5022;
S5021:如果可用最近應用列表(availableRecentTasks)只有一個元素,取得可用最近應用列表(availableRecentTasks)中的這一個元素和最近應用列表(recentTasks)的第一個元素,繼續執行S5024;
S5022:獲取最近應用列表(recentTasks)的第一個元素;
S5023:判斷最近應用列表(recentTasks)的第一個元素對應的后臺進程應用是否為桌面應用;如果是,則執行S5025;如果否,則執行S5026;
S5024:判斷這兩個元素是否相等:判斷可用最近應用列表(availableRecentTasks)的唯一元素和最近應用列表(recentTasks)中的第一個元素是否相等,如果相等,則表示后臺沒有其他后臺進程應用了,只有一個前臺程序,此時沒有后臺進程應用可以切換,執行S5030提示用戶“無可切換應用”;如果不相等,則執行S5027;
S5025:取得可用最近應用列表(availableRecentTasks)的第一個后臺進程應用的Intent作為啟動Intent:如果最近應用列表(recentTasks)的第一個元素對應的后臺進程應用是桌面應用,則取出可用最近應用列表(availableRecentTasks)的第一個后臺進程應用的Intent,作為切換的對象;
S5026:取得可用最近應用列表(availableRecentTasks)的第二個后臺進程應用的Intent作為啟動Intent;
S5027:將可用最近應用列表(availableRecentTasks)的唯一元素作為啟動Intent;
S5028:根據啟動Intent,調用Context的startActivity方法啟動后臺進程應用;
S5029:判斷startActivity方法執行是否有異常發生;如果有異常,則執行S5030;如果沒有異常,則執行S5031;
S5030:提示用戶“無可切換應用”;
S5031:未發生異常,可以認為切換成功;
S5032:函數退出,結束。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于競技世界(北京)網絡技術有限公司,未經競技世界(北京)網絡技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611218456.0/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種斷電時云系統提供持續服務的調度算法
- 下一篇:手工編織紋路皮革





