anr

时间:2023-11-01 06:11:00 编辑:大鹏 来源:长期打折网

【Android】ANR是如何产生的?,如何解决Android应用中的ANR问题,什么是ANR,ANR是什么意思?...

【Android】ANR是如何产生的?
【Android】ANR是如何产生的?
提示:

【Android】ANR是如何产生的?

众所周知,Android的输入事件是通过 InputReader 监听系统 dev/input 下的文件来获取输入事件,并由 InputDispatcher 来进行分发的。

而ANR事件就是在 InputDispatcher 中产生的。

InputDispatcher 内部维护了一个线程 InputDispatcherThread ,输入事件在这个线程中进行处理。这个线程在 InputManager 中进行创建和启动。

它只做了一件事,就是无限调用 dispatchOnce() 进行事件分发。

dispatchOnce() 会调用 dispatchOnceInnerLocked() 进行事件分发,而如果判断出当前事件是触摸事件,则会又调用 dispatchMotionLocked() 来分发触摸事件。在处理结束之后,会阻塞直到下一次事件的到来。

dispatchMotionLocked() 会调用 findTouchedWindowTargetsLocked() 查找触摸事件对应窗口目标并进行分发。如果当前窗口尚有未处理完的事件,则会调用 handleTargetsNotReadyLocked 处理。

handleTargetsNotReadyLocked 会判断目标事件等待时间,如果其大于5秒,则会调用 onANRLocked 进入ANR流程。

以上便是ANR的产生过程。

ANR的产生有两个必要条件:

/frameworks/native/services/inputflinger/InputDispatcher.cpp
Android输入事件分发与拦截

如何解决Android应用中的ANR问题
提示:

如何解决Android应用中的ANR问题

如何解决Android应用中的ANR问题?Android应用中的ANR(ApplicationNotResponding)指的是当应用程序无法响应用户输入或事件,导致程序停顿、出现卡顿甚至崩溃的情况。ANR问题可能影响用户的使用体验和造成不必要的损失。因此,解决ANR问题是Android应用开发中不可忽视的重要问题。以下是一些解决ANR问题的方法:1.优化耗时操作ANR问题通常是由耗时操作导致的,比如文件读写操作、网络请求等。这些操作都可能阻塞UI线程,从而导致应用停顿。优化耗时操作的方法有很多,比如使用异步任务、线程池、使用缓存等。2.避免在UI线程中执行耗时操作Android中UI线程主要负责UI的渲染和响应事件,如果在UI线程中执行耗时操作,会导致UI线程阻塞,从而导致ANR。因此,应该避免在UI线程中执行耗时操作,可以使用异步任务或线程池来执行耗时操作。3.使用多线程使用多线程可以使应用程序更高效地处理多任务,并且不会阻塞UI线程。使用多线程需要注意线程之间的同步,避免因线程安全问题导致的ANR问题。4.合理使用HandlerAndroid中的消息机制使用Handler来实现,它可以将消息发送到UI线程中处理。但是如果不正确地使用Handler,也会导致ANR问题。应该避免在Handler中执行耗时操作,可以在Handler中只处理UI相关的操作,对于耗时操作应该使用异步任务或线程池。5.使用TraceView和Systrace工具TraceView和Systrace工具可以帮助开发人员定位ANR问题。TraceView可以分析每个方法的执行时间,帮助开发人员找出导致ANR的方法。Systrace可以监测整个系统的性能,帮助开发人员找出导致ANR的原因。6.适当增加超时时间通常情况下,应该尽力避免ANR问题的发生。但是在某些情况下,一些操作可能需要时间较长,这时可以适当增加超时时间。但是超时时间也应该适度,过长的超时时间可能会导致用户体验不好。总之,解决ANR问题需要开发人员具备一定的技巧和经验。开发人员应该使用合适的工具和方法来定位和解决ANR问题,并对代码进行适当的优化,让应用程序更加高效地运行,提高用户体验。

什么是ANR
提示:

什么是ANR

雅诗兰黛Advanced Night Repair 简称ANR,棕色小瓶子的奇迹~
即时修护:每天使用可加强肌肤自然修护能力,持续修复肌肤日积月累因紫外线、环境污染、生活压力等因素造成的各项问题,持续使用会预防衰老,预防细纹和皱纹。

肤色均匀:持续使用可舒缓每日肌肤所承受的各项刺激,补充抗氧化物质,可淡化疤痕、痘印痕,匀亮肤色。

立即保湿:经过时间验证的透明质酸保湿锁水,保持肌肤水嫩,为健康皮肤创造最佳环境。众所周知的天然"水分磁场",能锁住比自身重量多1500倍的水分。
我在使用,效果很好,改善皮肤干燥,抗氧化,提高皮肤紧致力,还有祛痘消痕的作用~~

ANR是什么意思?
提示:

ANR是什么意思?

ANR(Application Not Responding)定义 在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用户。默认情况下,在android中Activity的最长执行时间是5秒,BroadcastReceiver的最长执行时间则是10秒。

上一篇:dnf女鬼剑武器选择
下一篇:没有了
相关文章
最新资讯
热门资讯