ANR和FC

本文详细介绍了Android应用中的ANR(Application Not Responding)和FC(Forced Close)问题。ANR通常发生在主线程执行耗时操作导致阻塞,解决方案是将耗时任务放在子线程中。FC则是由于程序或ROM严重错误导致的被迫退出,如内存耗尽或堆栈溢出。解决FC问题通常依赖于DEBUG和日志分析,尤其是logcat的使用。
摘要由CSDN通过智能技术生成

1. ANR的定义(Application Not Responding)

翻译过来就是应用程序无响应,此时正在运行的应用程序会变得很慢,反应不灵敏(一般来说,超过100毫秒的时间用户就会感知到阻滞感)
这三点,如果你在主线程里这样做,当然会使主线程阻塞啦。
1. 创建UI控件
2. 更新UI控件状态
3. 事件处理

解决办法其实很简单,为每一个耗时的操作都开一个子线程,分别在子线程里执行,然后把结果通过Handler来传递给主线程,然后主线程负责进行做出对应的处理。

2. FC的定义(Forced Close)

翻译过来就是被迫退出,程序或ROM出现了比较严重的错误,必须退出重启。原因大概有一下
1. Error
- OOM(out of memory error) 内存耗尽
- StackOverFlowError 堆栈溢出
2. RuntimeException 运行时错误

以上的问题大多是我们写代码时犯下的逻辑错误或者优化做的非常差,这是绝对绝对不允许出现的。至于解决办法就是DEBUG你懂得。常用的方法无非就是Log打印日志或者借助工具(例如强大的curl,等我用熟了再写一篇来介绍一下它,好的),其实能够熟练运用logcat,明白log各段的大致意思、擅于运用Filter就能够解决大多数问题了。

logcat

  1. logcat日志中的优先级/tag标记:
    android输出的每一条日志都有一个标记和优先级与
ANR(Application Not Responding)和Crash(崩溃)是Android应用程序中常见的问题,但它们有不同的表现和原因。 ANR是指当一个应用程序在主线程上执行了太长时间的任务或者发生了阻塞操作时,导致用户无法与应用进行交互,应用会出现“应用无响应”的提示。ANR通常是由以下情况引起的: 1. 主线程执行了耗时操作,如网络请求或数据库查询等。 2. 主线程被其他耗时的任务阻塞,如锁竞争或死锁等。 Crash是指应用程序在运行过程中发生了无法处理的异常,导致应用程序突然终止。Crash通常是由以下情况引起的: 1. 空指针引用或越界访问等编程错误。 2. 内存溢出或内存泄漏等资源问题。 3. 不受控制的异常或错误情况。 要区分ANR和Crash,可以根据以下特征进行判断: 1. ANR通常在应用程序仍然运行但无响应时发生,而Crash会导致应用程序直接终止。 2. ANR通常会显示一个对话框提示用户应用无响应,而Crash则可能会导致应用程序闪退或崩溃。 3. ANR通常是由主线程长时间阻塞或执行耗时操作引起,而Crash通常是由异常或错误引起。 在开发过程中,可以通过查看应用程序的日志、错误报告或使用调试工具来确定应用程序是否遇到了ANR或Crash。针对ANR问题,可以通过优化耗时操作或将其移至后台线程来解决。对于Crash问题,需要检查代码中的潜在错误,并进行修复和测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值