当前位置: 首页 > 面试题库 >

ANR是什么?怎样避免和解决ANR

暨嘉
2023-03-14
本文向大家介绍ANR是什么?怎样避免和解决ANR相关面试题,主要包含被问及ANR是什么?怎样避免和解决ANR时的应答技巧和注意事项,需要的朋友参考一下

Application Not Responding,即应用无响应

出现的原因有三种: a)KeyDispatchTimeout(5 seconds)主要类型按键或触摸事件在特定时间内无响应 b)BroadcastTimeout(10 seconds)BoradcastReceiver在特定的时间内无法处理 c)ServiceTimeout(20 seconds)小概率类型Service在特定的时间内无法处理完成

避免ANR最核心的一点就是在主线程减少耗时操作。通常需要从那个以下几个方案下手: a)使用子线程处理耗时IO操作 b)降低子线程优先级,使用Thread或者HandlerThread时,调用Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND)设置优先级,否则仍然会降低程序响应,因为默认Thread的优先级和主线程相同 c)使用Handler处理子线程结果,而不是使用Thread.wait()或者Thread.sleep()来阻塞主线程 d)Activity的onCreate和onResume回调中尽量避免耗时的代码 e)BroadcastReceiver中onReceiver代码也要尽量减少耗时操作,建议使用intentService处理。intentService是一个异步的,会自动停止的服务,很好解决了传统的Service中处理完耗时操作忘记停止并销毁Service的问题

 类似资料:
  • 本文向大家介绍项目延期怎么解决的?怎么避免项目延期?相关面试题,主要包含被问及项目延期怎么解决的?怎么避免项目延期?时的应答技巧和注意事项,需要的朋友参考一下 此问题考察的是沟通协调能力以及项目推动能力。 第一点,项目延期怎么处理? 了解情况:了解不能按时上线的原因及需要延期多长时间上线; 知会需求方:确定影响范围,知会需求方,讨论解决方案; 确定解决方案:协调资源加班解决;或者砍掉非核心功能保障

  • 本文向大家介绍axios是什么?怎样使用它?怎么解决跨域的问题?相关面试题,主要包含被问及axios是什么?怎样使用它?怎么解决跨域的问题?时的应答技巧和注意事项,需要的朋友参考一下 axios 的是一种异步请求,用法和ajax类似,安装npm install axios --save 即可使用,请求中包括get,post,put, patch ,delete等五种请求方式,解决跨域可以在请求头中

  • 1、缓存穿透 一般的缓存系统,都是按照key去缓存查询,如果不存在对用的value,就应该去后端系统查找(比如DB数据库)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。 2、怎么解决? 对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert之后清理缓存。   对一定不存在的key进行过滤。可以把所有的可能存在的

  • 问题内容: 我当时在考虑使用TIMESTAMP存储日期和时间,但是我读到它有2038年的限制。与其大量提出问题,不如将其分解成小部分,以便新手用户也易于理解。所以我的问题是: 2038年的问题到底是什么? 为什么会发生?发生时会发生什么? 我们该如何解决? 是否有使用它的其他可能的选择,而不会引起类似的问题? 当使用TIMESTAMP的现有应用程序真正发生时,我们该怎么办? 提前致谢。 问题答案:

  • 1、缓存穿透 一般的缓存系统,都是按照key去缓存查询,如果不存在对用的value,就应该去后端系统查找(比如DB数据库)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。 2、怎么解决? 对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert之后清理缓存。   对一定不存在的key进行过滤。可以把所有的可能存在的

  • markdown图片可以传到本地文件夹但只能传jpg,png传不了,数据库也有路径,但是不渲染出来 头像上传七牛云,密钥和域名都写得对的但点击就报400