1. 程式人生 > >Android系統穩定性----Crash

Android系統穩定性----Crash

Crash、FC、froce close

發生場景

應用程序崩潰。強制關閉,android App 因為程式碼異常導致奔潰。

表現形式主要有兩種

1.      Java 程式碼引起,彈出錯誤的提示框,JVM虛擬機器退出,絕大多數的工具可以捕獲。

2.      C++程式碼引起,沒有任何提示,直接回到桌面,所謂的閃退,一般是Linux程式退出,大部分發生在視訊,遊戲類與底層密切相關的軟體上

發生問題的原因

1.    Error  //程式錯誤

OOM(out of memory error) //記憶體溢位

StackOverFlowError //堆疊溢位錯誤

2.RuntimeException//

執行時異常----需要了解Exception機制,比如空指標啦,類沒有找到啦,資源沒找到,就連Android API使用的順序錯誤也可能導致(比如setContentView()之前進行了findViewById()操作)

常見的異常(分了十大類,在開發的過程中逐漸補充):

一.Java語法相關的異常

二.Activity相關的異常

三.序列化相關的異常

四.列表相關的異常

五.窗體相關的異常

六.資源相關的異常

七.系統碎片化相關的異常

八.SQLite相關的異常

九.不常見異常

十.其它異常

發生crash怎麼辦

獲取問題發生時的堆疊資訊和日誌

Eclipse logcat

Adb logcat

獲取快取,adb logcat –v time> d:\

解決辦法

log,定位問題

Crash問題的定位關鍵詞,crashFatalcaused by

caused by是真正的原因,提供包名+類名+方法名+行號等的關鍵資訊

檢視日誌,定位到問題是哪裡丟擲來的異常,什麼情況下回丟擲異常,這時候需要一套原始碼,或者OpenGrok的網站,

如何避免crash

1.    在程式中重要的地方,容易出錯的進行try catch捕獲異常,自己捕獲異常,處理異常,

2.    優化程式碼提高程式碼質量,通過各種工具如findbugs查詢程式碼漏洞

Crash問題的背景分析

對於一個開發者來說,

crash會帶來使用者的投訴,差評,甚至解除安裝,屬於Abug,必須解決

傳統的做法是:等待使用者反饋,被動

先進的做法:一個健壯的APP應該能夠蒐集執行中所有的Crash資訊,已知的異常,不嚴重的問題,我們可以進行捕獲,但我們不可能在所有的方法中新增try……catch……進行保護,需要一個統一的方法進行一網打盡,UncaughtExceptionHandler,我們一般設計一個CrashHandler類繼承自UncaughtExceptionHandler,重寫UncaughtException方法,進行異常捕獲並處理,注意該方法只處理未被捕獲的異常,try……catch捕獲的異常需要自己去處理。UncaughtExceptionHandler如何接入?我們只需要在Application初始化的時候獲取例項,進行設定。

CrashHandler crashHandler = CrashHandler.getInstance();

crashHandler.init(this);

市面上應對APP線上的Crash問題一般有兩種方法,記錄到第三方平臺或者記錄到自己的資料庫中。無論使用第三方或者自己的,都需要一個類作為入口進行收集crash資訊,

使用第三方的SDK,收集問題,上傳堆疊資訊日誌到平臺,並且提供統計資料,幫助開發者改善使用者體驗,除此之外,還提供技術支援,告訴你bug怎麼修復。推薦崩潰大師+騰訊bugly,這些第三方的SDK官網都有詳細的說明,有空了研究下

相關推薦

Android系統穩定性----Crash

Crash、FC、froce close 發生場景 應用程序崩潰。強制關閉,android App 因為程式碼異常導致奔潰。 表現形式主要有兩種 1.      Java 程式碼引起,彈出錯誤的提示框,JVM虛擬機器退出,絕大多數的工具可以捕獲。 2.      C++程式

Android 系統穩定性之ANR

       相信大部分Android 開發人員都遇到過ANR問題,本文根據一些實際的開發經歷介紹一下如何解決和避免ANR問題。 一,何為ANR        ANR是“Application Not Responding”的縮寫,即“應用程式無響應”。在Android中,

Android 系統穩定性

   如果你是一個Android應用程序開發人員,你的人生中不可避免的三件事情是:死亡、繳稅和ANR。這麼說是誇張了,但是由於Android本身的設計,以及應用程式和系統在開發過程中的缺陷,經常會在測試過程中遇到各種各樣的ANR問題。在功能性的測試中還少一些,主要

android系統穩定性-ANR(二)

P.S. OpenOffice貼上過來後格式有些混亂。 1.2如何分析ANR問題 引起ANR問題的根本原因,總的來說可以歸納為兩類: 應用程序自身引起的,例如: 主執行緒阻塞、掛起、死迴圈 應用程序的其他執行緒的CPU佔用率高,使得主執行緒無法搶

Android系統crash的幾種情況

Android程式崩潰大家都應該遇到過,force close和ANR應該是大家遇到較多的。 這裡把Android平臺程式崩潰的各種型別做一個簡述和原因列舉。 1.ANR(可見ANR): 發生場景:應用發生ANR。 崩潰症狀:系統彈出視窗詢問使用者選擇“Forc

Android系統構架及Native Crash

在Android 中,Broadcast是一種廣泛運用的在應用程式之間傳輸資訊的機制。而BroadcastReceiver 是對傳送出來的Broadcast進行過濾接受並響應的一類元件。可以使用BroadcastReceiver 來讓應用對一個外部的事件做出響應。這是非常有意思的,例如,當電話呼入這個外部事

【分享】迅為iTOP4412開發板-Android系統屏幕旋轉設置

原生 android4 代碼 豎屏 == watermark ont 分辨率 軟件 1.1概述 Android4.0,Androd4.4源代碼能夠編譯成手機模式和平板模式,訊為iTop4412 開發平臺 的Android系統默認編譯為平板模式。客戶須要依據自己的產品

改動android 系統時間

nbsp pop -m andro shel content data popu 命令 命令如 date -s "yyyymmdd.[[[hh]mm]ss]" 直接在CRT上執行,舉例:date -s "20120801.120503" 但在adb shell下

Android核心服務解析篇(三)——Android系統的啟動

onf med cin gets get lld 系統屬性 基本 安裝模塊 從大的方面來說。Android系統的啟動能夠分為兩個部分:第一部分是Linux核心的啟動,第二部分是Android系統的啟動。第一部分主要包含系統引導,核心和驅動程序等,因為它們不屬於本篇要講的

分布式系統穩定性模式

包沖突 日誌 rep 減少 機房 並且 trace 調用接口 做到 本篇文章主要介紹了"分布式系統穩定性模式",主要涉及到分布式系統穩定性模式方面的內容,對於分布式系統穩定性模式感興趣的同學可以參考一下。 對集群大訪問量的應用很有針對性的一些註意點。 1.隔離。 發

高速改動android系統默認日期方法

port odi -a 個推 post setting moved ast 是不是 高速改動android系統默認日期方法 在android系統的設備上,都有一個默認的開始日期,看過非常多設備,有些設備在沒有聯網的時候沒有同步到系統時間的時候,竟然默

【樹莓派】樹莓派刷Android系統

net 文章 圖文 str 鍵盤操作 左右移動 ima 工具 解決 樹莓派3安裝Android TV系統圖文教程 http://www.mz6.net/news/android/6866.html 樹莓派3 Android TV系統怎樣安裝?樹莓派3一個重要用途就是當智

調用aNDROID系統自帶功能

ont hao123 provide music content vid uri android系統 系統 CONTENTpROVIDER%E5%9F%BA%E7%A1%80%E4%B9%8BURI http://music.hao123.com/songlist/495

技術文章 | 系統穩定性保障核武器——全鏈路壓測

tps alt 系統 f11 技術文章 無限 通過 技術分享 center 為什麽要做全鏈路壓測? 對阿裏巴巴而言,每年最重要的一天莫過於雙11。這是因為在雙11的零點,系統會遭遇史無前例的巨大洪峰流量沖擊,保證雙11當天系統的穩定性對高可用團隊來說是巨大的挑戰。在這個

Android系統編譯出錯

android 編譯出錯在Android7.1編譯過程中出現如下錯誤:Starting build with ninjaninja: Entering directory `.‘ [ 0% 8/30301] Ensure Jack server is installed and startedJack

Android系統默認語言改為中文

android targe base center lang rda 16px oca 語言 第一種方法:修改 build/tools/buildinfo.shecho "ro.product.locale.language=zh"echo "ro.product.loca

實際項目中對系統穩定性的一些思考

技術 場景 每次 自己 html 能說 控制 bsp 進行 說起系統穩定性,其實已經有很多文章了.我這裏結合自己實際項目中的一些情況,進行了反思. 業務場景其實也很簡單.就是我們需要做一個爬蟲去爬取別的網站的文章和圖片. 主要問題出在圖片上,當時我在想可不可以不爬取

如何直接打開android系統的wifi設置頁面,防止intent劫持

art intent pre fonts mark bsp androi 希望 andro 在android的app開發中,經常會遇到需要跳轉至系統設置頁面的需求。但是當你使用以下代碼時: 如 Intent intent = new Intent(Settings.ACT

Android系統版本、Platform版本、SDK版本、gradle修改

wearable versions 應用 示例 tro tex ria col ide 雖然之前分析了gradle,但是在eclipse導入Android studio的時候,各個版本出現的問題還是很模糊,下面對各種版本進行一下說明: 參考資料: https://

第4章系統穩定性4.1在線日誌分析

時間排序 txt ash 可執行 字符串 awk -c 歸檔 行數 cat -n access.log -n打印行號 more access.log 空格-下一頁、回車-下一行、F-下一屏,百分比的下一個、B-上一屏 less access.log /查