[發(fā)明專利]一種應(yīng)用程序無響應(yīng)的處理方法及裝置有效
| 申請?zhí)枺?/td> | 201410509724.9 | 申請日: | 2014-09-28 |
| 公開(公告)號: | CN105446806B | 公開(公告)日: | 2019-03-15 |
| 發(fā)明(設(shè)計)人: | 梁捷;林作健 | 申請(專利權(quán))人: | 廣州市動景計算機(jī)科技有限公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48 |
| 代理公司: | 北京展翼知識產(chǎn)權(quán)代理事務(wù)所(特殊普通合伙) 11452 | 代理人: | 屠長存 |
| 地址: | 510627 廣東省廣州市天河區(qū)*** | 國省代碼: | 廣東;44 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 應(yīng)用程序 響應(yīng) 處理 方法 裝置 | ||
本發(fā)明實施例公開了一種應(yīng)用程序無響應(yīng)的處理方法及裝置,通過建立一個新的進(jìn)程,使其跟蹤應(yīng)用程序所在的當(dāng)前進(jìn)程的signal catcher線程,并在新進(jìn)程中修改signal catcher線程的內(nèi)存代碼,以使在出現(xiàn)ANR時,signal catcher線程能夠跳轉(zhuǎn)至應(yīng)用程序的開發(fā)人員預(yù)先編寫的處理函數(shù),由處理函數(shù)對ANR進(jìn)行處理,從而使應(yīng)用程序有機(jī)會中斷耗時的線程,停止I/O操作,以及記錄ANR的詳細(xì)信息以對應(yīng)用程序做出改進(jìn)。
技術(shù)領(lǐng)域
本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,特別是涉及一種應(yīng)用程序無響應(yīng)的處理方法及裝置。
背景技術(shù)
隨著智能終端的廣泛普及,安裝在終端上的應(yīng)用程序所實現(xiàn)的功能越來越完善,相應(yīng)的,這些應(yīng)用程序本身的結(jié)構(gòu)也越來越復(fù)雜,因此運行起來也更加耗費系統(tǒng)資源。以安卓(Android)操作系統(tǒng)系統(tǒng)為例,經(jīng)常會出現(xiàn)應(yīng)用程序無響應(yīng)(Application NotResponding,簡稱ANR)的情況。由于Android應(yīng)用程序通常是運行在一個單獨的線程例如main線程里,如果應(yīng)用程序所執(zhí)行的操作占用了主線程的太多資源,主線程就沒有能力再處理用戶的I/O操作或接收Intent廣播,應(yīng)用程序經(jīng)過預(yù)定的一段時間后仍未響應(yīng),系統(tǒng)就會默認(rèn)該應(yīng)用程序已經(jīng)掛起,這時終端通常就會顯示一個ANR對話框提供給用戶,由用戶選擇結(jié)束該應(yīng)用程序或繼續(xù)等待系統(tǒng)響應(yīng)。
現(xiàn)有技術(shù)中,系統(tǒng)會在ANR發(fā)生時向引起ANR的應(yīng)用程序所在進(jìn)程的signalcatcher線程發(fā)送一個POSIX(Portable Operating System Interface of Unix)標(biāo)準(zhǔn)信號,用于喚醒signal catcher線程,該線程主要用于處理ANR事件,并打印ANR日志,以供用戶后續(xù)查閱ANR發(fā)生時系統(tǒng)的相關(guān)信息。然而,這一系列操作通常是由系統(tǒng)在后臺執(zhí)行,對于應(yīng)用程序的開發(fā)者來說,并不能獲知ANR的發(fā)生,更沒有權(quán)限讀取ANR日志,因此,就不能對ANR事件做出處理,例如中斷耗時的線程,停止I/O操作,記錄ANR的詳細(xì)信息以對應(yīng)用程序做出改進(jìn)等。因此,現(xiàn)有的處理ANR的方法只能依賴用戶處理,穩(wěn)定性差,影響用戶體驗。
發(fā)明內(nèi)容
本發(fā)明實施例中提供了一種應(yīng)用程序無響應(yīng)ANR的處理方法及裝置,以解決現(xiàn)有技術(shù)處理ANR的方法只能依賴用戶處理,穩(wěn)定性差,影響用戶體驗的問題。
為了解決上述技術(shù)問題,本發(fā)明實施例公開了如下技術(shù)方案:
一方面,提供一種應(yīng)用程序無響應(yīng)ANR的處理方法,所述方法包括:
設(shè)置應(yīng)用程序所在的當(dāng)前進(jìn)程的可跟蹤屬性,以使所述當(dāng)前進(jìn)程能夠被非root權(quán)限的進(jìn)程跟蹤;
建立一個新進(jìn)程,使所述新進(jìn)程跟蹤所述當(dāng)前進(jìn)程的signal catcher線程;
在所述新進(jìn)程中,修改所述當(dāng)前進(jìn)程的signal catcher線程的內(nèi)存代碼,以使所述應(yīng)用程序出現(xiàn)ANR時,所述應(yīng)用程序所在的當(dāng)前進(jìn)程的signal catcher線程在執(zhí)行過程中跳轉(zhuǎn)至預(yù)設(shè)的處理函數(shù),由所述處理函數(shù)對ANR進(jìn)行處理。
可選的,修改所述當(dāng)前進(jìn)程的signal catcher線程的內(nèi)存代碼可包括如下步驟:
保存目標(biāo)地址,所述目標(biāo)地址為signal catcher線程的pc寄存器的值索引的地址;
將所述目標(biāo)地址開始的第一地址長度范圍內(nèi)的指令復(fù)制到位于所述當(dāng)前進(jìn)程內(nèi)存中的模板函數(shù)的第一指定位置;
將所述處理函數(shù)的地址寫入到所述模板函數(shù)的第二指定位置;將所述模板函數(shù)的返回地址指向所述目標(biāo)地址加上所述第一地址長度的地址;
在所述目標(biāo)地址的位置寫入跳轉(zhuǎn)代碼,以使出現(xiàn)ANR時,所述signal catcher線程的代碼執(zhí)行至所述目標(biāo)地址時跳轉(zhuǎn)至所述模板函數(shù)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于廣州市動景計算機(jī)科技有限公司,未經(jīng)廣州市動景計算機(jī)科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410509724.9/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 對虛擬化應(yīng)用程序的基于策略的訪問
- 應(yīng)用程序執(zhí)行、應(yīng)用程序提供裝置和應(yīng)用程序分發(fā)方法
- 一種軟件保護(hù)方法、裝置及系統(tǒng)
- 應(yīng)用程序的開發(fā)方法和系統(tǒng)
- 應(yīng)用程序的擴(kuò)展方法及裝置
- 一種應(yīng)用程序商店的應(yīng)用程序發(fā)布方法及裝置
- 一種應(yīng)用程序的監(jiān)控方法、裝置及系統(tǒng)
- 用于對虛擬化應(yīng)用程序的基于策略的訪問的方法和系統(tǒng)
- 應(yīng)用程序控制方法、裝置、終端及存儲介質(zhì)
- 一種應(yīng)用程序安裝、卸載方法及通信終端
- 時刻響應(yīng)
- 第一響應(yīng)和第二響應(yīng)
- 需求響應(yīng)方法和需求響應(yīng)系統(tǒng)
- 響應(yīng)裝置及其集成電路、響應(yīng)方法及響應(yīng)系統(tǒng)
- 響應(yīng)處理方法及響應(yīng)處理裝置
- 響應(yīng)裝置及網(wǎng)絡(luò)響應(yīng)方法
- 響應(yīng)生成方法、響應(yīng)生成裝置和響應(yīng)生成程序
- 響應(yīng)車輛、響應(yīng)車輛管理系統(tǒng)和響應(yīng)車輛控制系統(tǒng)
- 斷電響應(yīng)
- 響應(yīng)裝置、響應(yīng)方法及存儲介質(zhì)





