栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

android ANR报错异常处理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

android ANR报错异常处理

ANR 是android开发中常见的异常,报错的原因多种多样,还需要根据具体的现象找原因。

通常最常见的是在处理耗时的任务或者连接时间过长会导致ANR

1. 

10-27 09:08:37.031   648  1118 E ActivityManager:  +0% 924/kworker/2:0: 0% user + 0% kernel
10-27 09:08:37.031   648  1118 E ActivityManager:  +0% 1014/logcat: 0% user + 0% kernel
10-27 09:08:37.031   648  1118 E ActivityManager: 80% TOTAL: 5.6% user + 31% kernel + 24% iowait + 18% softirq
10-27 09:08:37.031   648  1118 E ActivityManager: CPU usage from 350044ms to 350044ms ago (1970-01-01 03:30:00.000 to 1970-01-01 03:30:00.000) with 0% awake:
10-27 09:08:37.031   648  1118 E ActivityManager: 0% TOTAL: 0% user + 0% kernel
10-27 09:08:37.056   648  1118 I ActivityManager: Killing 918:com.ync.menu/1000 (adj -800): bg anr
10-27 09:08:37.057   648  1118 D ActivityManager: Completed ANR of com.ync.menu in 2145ms, latency 139ms
10-27 09:08:37.061   648  1119 I DropBoxManagerService: add tag=system_app_anr isTagEnabled=true flags=0x2
10-27 09:08:37.179   648  1002 I ActivityManager: Process com.ync.menu (pid 918) has died: pers PER
10-27 09:08:37.181   648  1002 W ActivityManager: Scheduling restart of crashed service com.ync.menu/.system.CpServicein 0ms for persistent
10-27 09:08:37.182   304   304 I Zygote  : Process 918 exited due to signal 9 (Killed)
10-27 09:08:37.183   648   743 I libprocessgroup: Successfully killed process cgroup uid 1000 pid 918 in 124ms
10-27 09:08:37.183   648   743 I libprocessgroup: Successfully killed process cgroup uid 1000 pid 918 in 0ms
10-27 09:08:37.192   648  1002 W ActivityManager: Re-adding persistent process ProcessRecord{f4c15d9 918:com.ync.menu/1000}
10-27 09:08:37.200   648  1002 D CompatibilityChangeReporter: Compat change id reported: 135634846; UID 1000; state: DISABLED
10-27 09:08:37.221   304   304 D Zygote  : Forked child process 1120
10-27 09:08:37.225   648   735 I ActivityManager: Start proc 1120:com.ync.menu/1000 for restart com.ync.menu
10-27 09:08:37.548  1120  1120 I Zygote  : seccomp disabled by setenforce 0
 

由于在耗时任务在主线程中执行导致ANR

将任务放到子线程中处理

        new Thread(new Runnable() {
                @Override
                public void run() {

                //...............耗时任务---------

     }
   }).start();

2.或者在主线程进行循环处理耗时任务时刷新UI这样也是会报ANR,我们也可以给个子线程让任务单独处理,主线程可以处理其他事情,等子线程任务处理完成后在去处理其他事情,这样可以避免报ANR 异常。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/351255.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号