Android 系统的异常信息捕获

一、 Android tombstone

记录native进程crash 奔溃时, 系统的数据信息。

TOMBSTONE 是 Android 用来记录 native 进程崩溃的 core dump 日志, 系统服务在启动完成后会增加一个 Observer 来侦测 tombstone 日志文件的变化, 每当生成新的 tombstone 文件, 就会增加一条 SYSTEM_TOMBSTONE 记录到 DropBoxManager 中.

What a Terrible Failure简称WTF,WTF是Android系统记录错误的一种方式,报告一个永远不应该发生的情况,有些只是打印Error stack trace和存异常信息文件到dropbox,有些会crash app。

二、dropbox

Android DropBox 是 Android 用来持续化存储系统数据的一个管理类,主要用于记录 Android 运行过程中, 内核, 系统进程, 用户进程等出现严重问题时的 log, 可以认为这是一个可持续存储的系统级别的 logcat。

系统服务dropbox以文件形式记录了系统各种异常信息,例如app crash、native crash、anr、kernel panic等等。

/frameworks/base/core/java/android/os/DropBoxManager.java

/frameworks/base/services/core/java/com/android/server/DropBoxManagerService.java

dropbox日志路径:/data/system/dropbox

1、DropBoxManager dropbox = (DropBoxManager)getSystemService(Context.DROPBOX_SERVICE) 例如,dropbox.addText可实现把需要记录的数据丢给dropbox进行存储。

2、监听广播android.intent.action.DROPBOX_ENTRY_ADDED,可知系统发生了异常 注意权限:android.permission.READ_LOGS --- 平台签名或priv-app

 

java层:handleApplicationCrashInner("crash", r, processName, crashInfo); native层: mAm.handleApplicationCrashInner("native_crash", mApp, mApp.processName, ci);

DEFAULT_AGE_SECONDS = 3 * 86400:文件最长可存活时长为3天

DEFAULT_MAX_FILES = 1000:最大dropbox文件个数为1000

DEFAULT_QUOTA_KB = 5 * 1024:分配dropbox空间的最大值5M

DEFAULT_QUOTA_PERCENT = 10:是指dropbox目录最多可占用空间比例10%

DEFAULT_RESERVE_PERCENT = 10:是指dropbox不可使用的存储空间比例10%

QUOTA_RESCAN_MILLIS = 5000:重新扫描retrim时长为5s

上面这些都是默认值,完全可以通过设置content://settings/global数据库对应项来修改。

使用dropbox的优点

a.利用 DropBoxManager 来记录需要相对持久化存储的错误日志信息

优点:自动抓错, 避免人为因素而产生的错误遗漏

b.错误自动上报

可以利用dropbox每生成新的记录, Dropbox 就会发送广播:

DropBoxManager.ACTION_DROPBOX_ENTRY_ADDED

app可以接收监听改广播获取指定的数据文件内容,内容发送到指定的服务器或邮箱完成错误自动上报。

利用前提:app要具有系统权限 因为:DropBoxManager.ACTION_DROPBOX_ENTRY_ADDED是保护性广播,且读取系统日志也需要android.Manifest.permission.READ_LOGS权限。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android系统性能优化对于解决卡顿、提升稳定性和优化续航方面起着重要的作用。 首先,在解决卡顿问题上,开发人员需要关注应用程序的UI线程。为了确保应用程序的流畅运行,可以采用以下优化措施:优化布局文件,减少层级嵌套;使用异步加载图片,避免在主线程中进行网络请求等耗时操作;合理利用缓存机制,避免重复加载数据。此外,还可以针对卡顿问题进行性能分析,通过工具查找耗时操作,并进行相应的优化。 其次,在提高系统稳定性方面,开发人员需要考虑异常崩溃的处理和内存管理。异常崩溃处理可通过捕获并记录崩溃异常来及时解决问题和改进代码。内存管理方面,应避免内存泄漏和过度分配内存,使用系统提供的工具来进行内存管理和优化。 最后,在续航优化上,需要考虑电源管理和资源使用的合理分配。通过使用省电模式、灵活控制后台任务和限制应用程序在后台运行等方式,最大程度地延长设备的电池寿命。另外,合理管理资源,避免过度使用CPU、网络和图形渲染等资源,有助于降低能耗并优化系统续航。 总之,Android系统性能优化是一个综合性的工作,需要开发人员关注卡顿问题、提升稳定性和优化续航方面的问题。通过合理使用工具和采取相应的优化措施,可以实现系统性能的有效提升。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值