zoukankan      html  css  js  c++  java
  • 多测师讲解app_app出现ANR(无响应)_高级讲师肖sir

    app出现ANR(无响应),是什么原因导致的?
    那么导致ANR的根本原因是什么呢?简单的总结有以下两点:
    1.主线程执行了耗时操作,比如数据库操作或网络编程
    2.其他进程(就是其他程序)占用CPU导致本进程得不到CPU时间片,比如其他进程的频繁读写操作可能会导致这个问题。
    细分的话,导致ANR的原因有如下几点:
    1.耗时的网络访问
    2.大量的数据读写
    3.数据库操作
    4.硬件操作(比如camera)
    5.调用thread的join()方法、sleep()方法、wait()方法或者等待线程锁的时候
    6.service binder的数量达到上限
    7.system server中发生WatchDog ANR
    8.service忙导致超时无响应
    9.其他线程持有锁,导致主线程等待超时
    10.其它线程终止或崩溃导致主线程一直等待。

    App出现crash(崩溃)原因有哪些?
    为什么App会出现崩溃呢?百度了一下,查到和App崩溃相关的几个因素:内存管理错误,程序逻辑错误,设备兼容,网络因素等,如下:
    1.内存管理错误​:可能是可用内存过低,app所需的内存超过设备的限制,app跑不起来导致App crash。
    或是内存泄露,程序运行的时间越长,所占用的内存越大,最终用尽全部内存,导致整个系统崩溃。
    亦或非授权的内存位置的使用也可能会导致App crash。
    2.程序逻辑错误:​数组越界、堆栈溢出、并发操作、逻辑错误。
    e.g. app新添加一个未经测试的新功能,调用了一个已释放的指针,运行的时候就会crash。
    3.​设备兼容:由于设备多样性,app在不同的设备上可能会有不同的表现。
    ​4.网络因素:可能是网速欠佳,无法达到app所需的快速响应时间,导致app crash。或者是不同网络的切换也可能会影响app的稳定性。

  • 相关阅读:
    strspn实现 查找第一个不在指定字符串中出现的字符
    strstr 的实现 即 字符串中查找子字符串第一次出现的位置
    strcspn
    将字符串中的大写字母变成小写字母
    strrchr 字符在字符串中最后一次出现的位置
    strchr 字符c在字符串中出现的位置 实现
    qsort库函数 排序
    strncmp实现
    strcmp实现
    ACM/ICPC题目输入情形及其处理方法
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/13840806.html
Copyright © 2011-2022 走看看