2024年安卓最新Android开发:不会ANR?这里有ANR全解析和各种案例包教包会(1),Android进阶面试资料无偿分享

《设计思想解读开源框架》

第一章、 热修复设计

  • 第一节、 AOT/JIT & dexopt 与 dex2oat

  • 第二节、 热修复设计之 CLASS_ISPREVERIFIED 问题

  • 第三节、热修复设计之热修复原理

  • 第四节、Tinker 的集成与使用(自动补丁包生成)

    第二章、 插件化框架设计

  • 第一节、 Class 文件与 Dex 文件的结构解读

  • 第二节、 Android 资源加载机制详解

  • 第三节、 四大组件调用原理

  • 第四节、 so 文件加载机制

  • 第五节、 Android 系统服务实现原理

    第三章、 组件化框架设计

  • 第一节、阿里巴巴开源路由框——ARouter 原理分析

  • 第二节、APT 编译时期自动生成代码&动态类加载

  • 第三节、 Java SPI 机制

  • 第四节、 AOP&IOC

  • 第五节、 手写组件化架构

    第四章、图片加载框架

  • 第一节、图片加载框架选型

  • 第二节、Glide 原理分析

  • 第三节、手写图片加载框架实战

    第五章、网络访问框架设计

  • 第一节、网络通信必备基础

  • 第二节、OkHttp 源码解读

  • 第三节、Retrofit 源码解析

    第六章、 RXJava 响应式编程框架设计

  • 第一节、链式调用

  • 第二节、 扩展的观察者模式

  • 第三节、事件变换设计

  • 第四节、Scheduler 线程控制

    第七章、 IOC 架构设计

  • 第一节、 依赖注入与控制反转

  • 第二节、ButterKnife 原理上篇、中篇、下篇

  • 第三节、Dagger 架构设计核心解密

    第八章、 Android 架构组件 Jetpack

  • 第一节、 LiveData 原理

  • 第二节、 Navigation 如何解决 tabLayout 问题

  • 第三节、 ViewModel 如何感知 View 生命周期及内核原理

  • 第四节、 Room 架构方式方法

  • 第五节、 dataBinding 为什么能够支持 MVVM

  • 第六节、 WorkManager 内核揭秘

  • 第七节、 Lifecycles 生命周期


    本文包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

adb pull /data/anr/

读取关键日志信息

1)在log中找到ANR发生信息: Traces文件中的关键字,例如:

09-24 15:20:20.211 1001 1543 1570 XXXXXXX: ANR in xxxxxx

09-24 15:20:20.211 1001 1543 1570 XXXXXXX: PID: xxxxx

09-24 15:20:20.211 1001 1543 1570 XXXXXXX: Reason: xxxxxx

其中:

  • ANR in中,包括导致ANR的包名,类名

  • PID 中,为发生ANR的进程PID

  • Reason 中,为导致ANR的原因,例如keyDispatchingTimedOut

2)找到CPU Usage信息

09-24 15:20:20.211 1001 1543 1570 XXXXXX: CPUusage from xxx to xxx ago xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx

09-24 15:20:20.211 1001 1543 1570 XXXXXX: CPUusage from xxx to xxx later xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx

其中

  • ago 表示ANR发生前的CPU的使用情况

  • later表示ANR发生后的CPU的使用情况

  • 重点关注xxx%TOTAL: xxx% user + xxx% kernel + xxx% iowait,可通过这几项了解到CPU的占用情况。

具体分析

分析CPU usage以后,如若还是无法找出问题原因,则需要进一步分析trace文件。traces文件中详细记录了发生ANR前后该进程的各个线程的Stack,一般从主线程的stack入手分析,查看分析ANR问题发生前,应用是否有异常。

其中不同场景下的ANR问题情况不大相同,需要具体情况具体分析,此处就不展开详细描述。

ANR问题难点及破题思路
ANR难点

用户在应用内的绝大部分操作,比如按钮点击,加载资源,页面跳转等操作,都需要有App的主动反馈,但ANR发生时,在用户等待数秒后,仅会弹出一个“应用无响应”的弹窗给用户,这会给用户带来“应用难用”的感觉,极其影响用户体验。

但是,现网中的ANR问题又很难处理,问题包括但不限于:

1.平时的测试难以覆盖,毕竟ANR经常出现在老设备、弱网络环境的场景下,测试难以做到全场景覆盖。

2.对于现网应用的ANR问题,如果问题非必现,则定位难度较高,需要有可以复现问题的实际设备在身边,才能获取到具体日志trace等信息。

3.ANR问题定位复杂,影响因素多,一些新负责定位ANR问题的同学,上手困难,问题解决比较依赖经验。

ANR处理新方案

除了依赖现有传统的ANR问题定位经验,配合第三方应用监控平台、进行ANR问题的处理,也是方便快捷的ANR处理手段。

提升用户体验迫在眉睫,但ANR问题对用户体验影响大, 定位解决ANR问题老大难,针对这个需求痛点,越来愈多的第三方开始研究并对外提供应用性能监控工具。

性能管理(App Performance Management,简称APM)是华为AppGallery Connect质量系列服务中的其中一项,提供分钟级应用性能监控能力,其ANR分析功能,更是解决ANR问题定位与处理的最佳搭档。使用AGC性能管理服务监控应用ANR,能够为您带来以下好处:

1.实时监控现网应用ANR,现网应用ANR趋势全掌握。

2.ANR现场信息自动采集和展示,大部分情况无需复现,在线定位问题。

3.通过APM页面,定位思路系统化,快速上手ANR问题定位,及时解决问题。

ANR问题解决案例整理

接下来以华为AGC性能管理服务为例,介绍配合AGC性能管理服务,如何快速定位典型的ANR问题。

案例(一):死锁导致的ANR问题定位

发现问题

在华为AGC控制台的我的项目-质量-性能管理页面,在“ANR分析”页签下,发现排在第一位的“用户ANR率”高达16.67%,决定优先解决该类ANR问题。

定位问题

点开TOP排行榜中该类问题卡片,进入了该类“ANR问题详情”页面,进一步查看分析该ANR 问题的数据报告。

在这个“ANR问题详情”页面中,分析用户数分布饼图,发现该类ANR问题在“应用版本2.0”、“手机型号HUAWEI VOG-AL10”、“系统版本10”这三个条件下,ANR影响的用户数最多。

在报告下方的“发生记录”中,找到满足这三个条件的发生记录,点击“查看详情”准备针对具体的问题进行分析。

(1) 分析系统资源状态 首先,通过报告,发现该问题发生时,CPU占用是20%、IO占用是0%、未发生过低内存、应用被分配堆是26.50MB、应用已用堆是8.69MB,线程数是61,从系统资源来看,未出现明显的异常,如下图所示:

尾声

如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

这里,笔者分享一份从架构哲学的层面来剖析的视频及资料给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。

Android进阶学习资料库

一共十个专题,包括了Android进阶所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!

大厂面试真题

PS:之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

《2019-2021字节跳动Android面试历年真题解析》

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

[外链图片转存中…(img-tMIoOqy5-1715809220051)]

《2019-2021字节跳动Android面试历年真题解析》

[外链图片转存中…(img-lLNSGxoF-1715809220052)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 29
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值