Android异常之应用已停止运行的日志分析

Android  2020年6月8日 am9:00发布5年前 (2020)更新 城堡大人
93 0 0

文章之前写过,重新整理一下。

为什么会有应用已停止运行?

运行时出现了未捕获的异常,导致程序无法正常运行。

如下面,主线程(main)出现致命异常(fatal exception)导致程序无法正常运行。

 # main主线程,fatal exception 致命异常
 AndroidRuntime: FATAL EXCEPTION: main
 AndroidRuntime: Process: com.la.allwater, PID: 4553
 AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.ContentResolver android.content.Context.getContentResolver()' on a null object reference
 AndroidRuntime:        at com.la.allwater.HomeMainActivity$1.onClick(HomeMainActivity.java:40)
 AndroidRuntime:        at android.view.View.performClick(View.java:6609)
 AndroidRuntime:        at android.view.View.performClickInternal(View.java:6582)
 AndroidRuntime:        at android.view.View.access$3100(View.java:780)
 AndroidRuntime:        at android.view.View$PerformClick.run(View.java:26094)
 AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:873)
 AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:99)
 AndroidRuntime:        at android.os.Looper.loop(Looper.java:193)
 AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:6702)
 AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
 AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
 AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:994)

如何定位问题了

一般这样的问题寻找关键字AndroidRuntime或者FATAL或者EXCEPTION

这三个关键字各有优点,个人比较喜欢使用fatal来定位更快一些。

解决问题

报错可以,但不能影响整个应用,因此在一些未知情况下可以使用如下方式做一定的处理。

新增判断条件

既然不支持是否为null,因此在使用前进行null判断,不为null才执行后续判断

                if (null != context) {
                   context.getContentResolver();
               }
防患未来

捕获可能存在异常的代码块。异常正常打印,不会影响整个影藏。

                try {
                    context.getContentResolver();
                } catch (Exception e) {
                    e.printStackTrace();
                }

 历史上的今天

  1. 2021: 樊小纯:借我(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

Android P去除MediaProvider编译

前言记录一下Android P去除MediaProvider编译。记录于此,方便自己查阅。正文隐藏内容!付费阅读后才能查看!¥1 ¥3多个隐藏块只需支付一次付费阅读参考文章

Android悬浮球

前言上次介绍过创建一个《1像素的悬浮窗口》,这里需要做一个跟魅族一样的悬浮球,部分代码套用之前的。设计悬浮球时考虑全屏和非全屏,以及导航栏在左侧或底部情况等,要不然拖动时存在抖动问题。正文直接入正文,上代码片段。隐藏内容!付费阅读后才能查看!¥3 ¥6多个隐藏块只需支付一次付费阅读...

Zygote的启动之一app_main

前言Android系统中,所有的应用程序以及SystemServer都是由Zygote进程孕育(fork)出来的。这里介绍app_main.cpp中的代码。Android P正文涉及文件\system\core\rootdir\init.rc\system\core\rootdir...

Android双屏异显(Presentation)的简单使用

前言Android 从4.2开始支持双屏显示,支持版本为17以上。Android 双屏原理说白了,自定义一个Presentation类,Android 的标准实现是使用 API Presentation 来实现异显的功能。public class Presentation extends D...

[转]毕业5年决定人的一生

大家千万不要错过这篇文章,毕业三年多了,能看到这篇文章也是一种幸运,真的受益匪浅,对我有很大启迪,这篇文章将会改变我的一生,真的太好了,希望与有缘人分享,也希望对有缘人有所帮助!看完之后有种“相见恨晚”的感觉,特别激动,希望大家好好的珍藏这篇文章,相信多年以后,再来看这篇文章,一定有不同的感...

梁文道:在铁路上开餐

在日本坐火车旅行,其中一个乐趣是可以吃到美味的铁路便当。别小看这些并非现做因而盛放在保温器皿里的食物,它们可都经过精心配制,虽经水汽持续蒸腾,但风味别具。而且每个地方都有自己的特色,例如“明石便当”,一个小陶瓮里装着炖煮得软熟耐嚼的章鱼饭,光是外形就已经可爱了。讲究点的,还可以在各个车站百货公司里搜...