一,

Force Close,意为强行关闭,当前应用程序发生了冲突。简称FC。

NullPointExection(空指针),IndexOutOfBoundsException(下标越界),就连Android API使用的顺序错误也可能导致(比如setContentView()之前进行了findViewById()操作)等等一系列未捕获异常。

偶尔一次的FC 可以不用台在意。 但是常常发生FC就一定要引起重视, FC是一种非常严重的问题。

二, 规避:

1, 可以实现Thread.UncaughtExceptionHandler接口的uncaughtException方法。再补充一句,想要哪个线程可以处理未捕获异常,Thread.setDefaultUncaughtExceptionHandler( this); 这句代码都要在那个线程中执行一次

在uncaughtException方法中,第一个参数是线程,第二个参数是异常。

成功捕获到了异常,而且activity也退出了,可是并不是安全退出,因为当你再次点击打开apk时,发现程序无响应。

为了解决上述问题,我在uncaughtException方法里将进程杀死,杀死进程有好多中方法,在此列举一个自杀式方法

android.os.Process.killProcess(android.os.Process.myPid());

参考:http://www.jb51.net/article/90176.htm

2, Forceclose这类问题主要通过Thread.UncaughtExceptionHandler这个类来捕获异常。通过实现类里面的方法uncaughtException来实现应用在捕获到异常后进行相关的处理。一般这里处理基本放在应用的Application类中。

同样的对于ANR问题,应用也可以做相关处理。对ANR,我们可以这样处理。通过一个看门狗来实时的检测主线程,一旦主线程发生阻塞,则通知Application 做相关处理。

主要方法是在线程中每隔一段时间(Activity一般是5S,广播一般是10S),向主线程发送一个messager,使计数器加1,如果到点没有加1,则表明主线程阻塞。

3, 在代码开发的过程中要思维缜密,做到逻辑严密,善于try catch, 注意代码规范。同时测试也尽量多的去覆盖。 就能很大程度上避免上市后的FC 。

参考:https://www.2cto.com/kf/201504/393309.html

三,和ANR的区别

参考:https://blog.csdn.net/lin111000713/article/details/52459888

ANR,程序没有响应,有可能程序会再次响应

例子:

应用运行时,Main线程进行了耗时操作
应用运行时,用户操作过于频繁

Force close:程序抛出异常,会强制退出

例子:

应用运行时抛出了OutOfMemoryError,
应用运行时抛出了RuntimeException

出现场景

ANR出现场景:

主线程被IO操作(从4.0之后网络IO不允许在主线程中)阻塞。

主线程中存在耗时的计算

主线程中错误的操作,比如Thread.wait或者Thread.sleep等

Android系统会监控程序的响应状况,一旦出现下面情况,则弹出ANR对话框

在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。

默认情况下,在android中Activity的最长执行时间是5秒,BroadcastReceiver的最长执行时间则是10秒。超出就会提示应用程序无响应(ANR:Application Not Responding)对话框。

三种常见类型

1: KeyDispatchTimeout(5 seconds) -- 主要类型

按键或触摸事件在特定时间内无响应

2 : BroadcastTimeout(10 seconds)

BroadcastReceiver在特定时间内无法处理完成

3: ServiceTimeout(20 seconds) -- 小概率类型

Service在特定的时间内无法处理完成

Force close出现场景(一般是异常情况):

比如空指针、数组越界、类型转换异常等等。

捕获:可以通过logcat查看抛出异常的代码出现的位置,然后到程序对应代码中进行修改。

四,下列哪些情况下系统会程序抛出异常,强制退出(不定项选择)

  • 应用运行时,Main线程进行了耗时操作
  • 应用运行时抛出了OutOfMemoryError
  • 应用运行时抛出了RuntimeException
  • 应用运行时,用户操作过于频繁

导致android app Force Close原因,如何规避相关推荐

  1. android app闪退原因总结分析

    存储不够 缓存过多,剩余空间不够(针对内存): 后台任务太多,导致运存不够(针对运存) App和SDK版本不兼容 sdk版本明显低于app,高版本app调用低版本SDK没有的API: 不同版本间API ...

  2. android 服务开机启动慢,Android App启动慢原因

    一.App启动方式: 冷启动(Cold Start).温启动(Warm start).热启动(Hot start) 1.  冷启动(Cold Start):是指App启动后第一次运行,获取App进程杀 ...

  3. Android中app卡顿原因分析示例

    http://www.cnblogs.com/zhucai/p/weibo-graphics-performance-analyse.html 朱才 专注于Android图形动画 MIUI工程师 博客 ...

  4. Android App定位和规避内存泄露方法研究

    from:http://site.douban.com/android/widget/notes/350758/note/167481484/ 工作中刚好用到,网上搜到的,觉得不错,与大家分享 And ...

  5. Android 系统(55)---Android App开发之ANR异常的原因分析及处理总结

    Android App开发之ANR异常的原因分析及处理总结 Android App开发之ANR异常的原因分析及处理总结 ANR的全称是application not responding,根据它的意思 ...

  6. 可能导致Android手机死机的原因

    死机现象: 1. 死机/phong hang 定义 当手机长时间无法再被用户控制操作时,我们称为死机或者hang 机. 在这里我们强调长时间,如果是短时间,我们归结为Perfomance 问题,即性能 ...

  7. 〖Android〗Android App项目资源字符串检查(检查是否缺少对应的翻译,导致系统切换语言后崩溃)...

    Android项目开发过程中,容易出现缺少对应中英文翻译的情况,这个Python脚本是用于检查字符串是否缺少了对应的翻译 1 #!/usr/bin/env python 2 # encoding: u ...

  8. android启动画面白屏,Android app启动时黑屏或者白屏的原因及解决办法

    1.产生原因 其实显示黑屏或者白屏实属正常,这是因为还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景. 示例: 2.解决办法 通过设置设置Style (1)设置背 ...

  9. android app被回收,Android app被回收之后会导致的问题

    当android app被回收之后,再次点击图标会回到最后打开的页面,但是一些数据已经被回收了,直接打开可能会报空指针异常之类的,我们可以判断是否被回收,然后重启app public class St ...

最新文章

  1. Javascript导航菜单13则
  2. mysql写放大,canvas实现图片根据滑块放大缩小效果
  3. Linux Kernel aarch64的ARM-CE aes-ecb的底层代码导读
  4. java旺季机票_java-第四章-机票价格受到淡季旺季的影响,编写的小程序
  5. 网络知识:整理各种路由器组网方法!网跨段也能访问!
  6. IdentityServer4之Authorization Code(授权码)相对更安全
  7. 小程序真机测试「启动参数」解析出错问题
  8. Maven依赖下载速度慢,不用怕,这么搞快了飞起
  9. ffmpeg 安装bzlib_编译安装ffmpeg 要支持xvid、x264、mp3、ogg、amr、faac
  10. 手机测试兼容性的工具
  11. 移动硬盘打不开,换一台电脑就又可以打开了
  12. abs在c 语言中的作用是什么意思,abs什么意思 c语言中abs是什么意思
  13. bios 微星click_微星发表全新搭载图形化『Click BIOS』主机板 采用最新UEFI架构 迎接全图形化BIOS调教新时代...
  14. 细节决定成败,聊聊防御性编程
  15. 工程打包是什么意思_项目打包命令的意思
  16. 硬盘安装ubuntu 14.04 LTS
  17. python三国演义人物 统计分析_Python统计三国演义主要人物出场次数
  18. 进销存软件哪个简单好用?来看看这5款
  19. 一年节气查询阳历日期与节气名称
  20. 数学教育与计算机教育的新讲座的心得体会,数学新课程培训心得体会(精选7篇)...

热门文章

  1. Java 语言基础知识
  2. 西南大学考研电子信息907初试经验
  3. 解决revit缺少外部工具
  4. pillow属于python标准库吗_详解Python图像处理库Pillow常用使用方法
  5. hdu1426一道很有意思的题目:数独
  6. CS144-Lab0
  7. 数据分析- 2012美国总统竞选赞助数据分析
  8. 一个开发周期为6个月的中小型软件开发项目成本预算大致表
  9. [转]GDI 泄漏检测方法
  10. 安泰科普:低频功率放大器工作原理