最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

【九月打卡】第12天 ANR 異常和 OOM 異常面試問題

標(biāo)簽:
Android

课程名称BAT大牛亲授技能+技巧 Android面试快速充电升级
课程章节:Android基础相关面试问题
主讲老师DocMike

课程内容

ANR 异常

ANR(Applicationi Not Responding),应用程序无响应。在 Android 中如果应用程序有一段时间没有响应用户的操作,就会弹出 ANR 的对话框,影响用户的体验。

Android 系统会监控程序的响应状况,不同的组件发生 ANR 的时间是不一样的。

  • Activity:5 秒,应用在 5 秒内未响应用户的输入事件(如按键或者触摸等)。
  • BroadCastReceiver :10 秒,即 BroadcastReceiver 未在 10 秒内完成相关的处理。
  • Service:20 秒(均为前台),即 Service 在 20 秒内没有完成相关的业务处理。

应用程序的响应性是由 ActivityManager 和 WindowManager 系统服务监控的,引起 ANR 的主要原因:

  • 主线程被 IO 操作(从 4.0 之后网络 IO 不允许在主线程中)阻塞;
  • 主线程中存在耗时的计算;

Android 中哪些操作是在主线程的呢?

  • Activity 的所有生命周期回调都是执行在主线程的。
  • Service 默认是执行在主线程的。
  • BroadcastReceiver 的 onReceive 回调是执行在主线程的。
  • 没有使用子线程的 looper 的 Handler 的 handleMessage() 方法,post() 方法都是执行在主线程的。
  • AsyncTask 的回调方法中除了 doInBackground() 方法,其它都是执行在主线程。

如何解决 ANR?

  • 使用 AsyncTask 处理耗时的 IO 操作;
  • 使用 Thread 或者 HandlerThread 提高优先级;
  • 使用 Handler 来处理工作线程的耗时任务;
  • Activity 的 onCreate() 和 onResume() 回调中尽量避免耗时的代码。

OOM 异常

什么是 OOM?当前占用的内存加上我们申请的内存资源超过了 Dalvik 虚拟机的最大内存限制就会抛出 Out Of Memory 异常。

Android 中跟内存相关的一些容易混淆的概念

  • 内存溢出(OOM)
  • 内存抖动,即短时间内大量对象被创建和释放,触发 GC;
  • 内存泄露,虚拟机中没有的垃圾对象还直接或间接地被引用着。

如何解决 OOM?

  • 适当调整图像的大小,系统分配给图像的显示区域有限,对于超大的图片,在加载到内存之前,可以通过适当调节采样率来加载图片。
  • 使用图像缓存,在 RecyclerView 或 Gallery 等控件中,一次加载大量图片时,可以只加载屏幕显示的资源,不加载尚未显式的内容,对于移出屏幕的资源及时释放。
  • 采用低内存占用量的编码方式,来压缩图片,比如Bitmap.Config.ARGB_4444比Bitmap.Config.ARGB_8888更省内存。
  • 捕获异常,为了避免应用在分配 Bitmap 内存的时候出现 OOM 异常以后 Crash 掉,需要特别注意实例化Bitmap 部分的代码。通常,在实例化 Bitmap 的代码中,一定要对 OOM 异常进行捕获。

课程收获

这一章对 Android 中常见的 ANR 异常和 OOM 异常进行了梳理,在实际的开发中,面临会产生 ANR 和 OOM 的场景会更多。但是不管是什么场景,产生的原因都是这一章介绍的内容,在解决问题时,可以从这些方面入手。
图片描述
图片描述

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
移動(dòng)開發(fā)工程師
手記
粉絲
12
獲贊與收藏
17

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消