Android兩種常見錯誤-ANR和FC(Force close)
ANR(Activity Not Respone)(無響應)
先介紹下Main執行緒(也稱為UI執行緒、主執行緒)
功能: 1.建立UI控制元件
2.更新UI控制元件狀態
3.事件處理
限制:Main執行緒不建議有超過5秒的事件
出現條件:
當使用者輸入事件5s內沒有得到響應,將彈出ANR對話方塊
廣播接收者的onReceive()執行時間超過10s
解決方案(原則):
所有可能的耗時操作都要在子執行緒()中執行
常見耗時操作:
I/O:網路操作
SDcard
資料運算
FC(Force close)
原因:
1.Error
OOM(out of memory error)
StackOverFlowError
2.RuntimeException
解決辦法:
看日誌
子執行緒不能更新UI的解決思路:
1、 將子執行緒執行結果傳送到Main執行緒:handler+massage執行緒間通訊
傳送訊息:
Message msg = mHandler.obtainMessage(UPLOAD, json);
mHandler.sendMessage(msg);
接收訊息:
public void handleMessage(Message msg) {
switch (msg.what) {
case UPLOAD:
mTextView2.setText((String) msg.obj);
break;
case DOWNLOAD:
mTextView.setText((String) msg.obj);
break;
default:
break;
}
}
2、 使更新ui程式碼段在Main執行緒執行:
1.runOnUiThread
2.view.post view.postDelay()
3.handler.post handler.postDelay()
相關文章
- 8種常見SQL錯誤用法SQL
- Android-AsyncTask及UncaughtExceptionHandler捕獲全域性性異常(ANR、FC)AndroidException
- 9種常見的Android開發錯誤及解決方案Android
- MySQL常見的8種SQL錯誤用法MySql
- Go常見錯誤第15篇:interface使用的常見錯誤和最佳實踐Go
- MySQL 常見錯誤MySql
- oracle 常見錯誤Oracle
- 機器學習實踐中的 7 種常見錯誤機器學習
- java遠端呼叫(rmi)常見的兩個錯誤Java
- Go 常見錯誤集錦 | 字串底層原理及常見錯誤Go字串
- Go常見錯誤集錦 | 字串底層原理及常見錯誤Go字串
- 常見的web錯誤Web
- mysql replication常見錯誤MySql
- 前端:常見的6種HTML5錯誤用法前端HTML
- 避免常見的六種HTML5錯誤用法HTML
- Excel小技巧-公式和函式使用的常見八種錯誤合集Excel公式函式
- MySQL 效能最佳化:8 種常見 SQL 錯誤用法!MySql
- 機器學習實踐中應避免的7種常見錯誤機器學習
- php安全配置記錄和常見錯誤梳理PHP
- MySQL 安裝常見錯誤MySql
- mysql8 常見錯誤MySql
- 常見的錯誤 SQL 用法SQL
- Oracle之Rman常見錯誤Oracle
- MySQL Replication常見錯誤整理MySql
- Hadoop常見錯誤2Hadoop
- opencv 編譯常見錯誤OpenCV編譯
- Android 應用中十大常見 UX 錯誤AndroidUX
- 物聯網學習教程—常見錯誤和程式除錯除錯
- 背事故?分享 6 種常見的 Go 致命錯誤場景Go
- Nginx常見錯誤程式碼總結和分析方法Nginx
- 搭建github部落格常見錯誤Github
- 變數命名以及常見錯誤變數
- Mysql:1236常見錯誤MySql
- Shell:常見錯誤總結(一)
- 常見的 PostgreSQL 升級錯誤SQL
- 常見 HTTP 錯誤程式碼大全HTTP
- MySql 常見錯誤程式碼大全MySql
- js作用域的常見錯誤JS