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

Android  2020年6月8日 am9:00发布4年前 (2020)更新 91es.com站长
68 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、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

Android中ImageView半边圆角处理记录2

前言之前介绍过对ImageView进行圆角处理,具体文章《Android中ImageView半边圆角处理记录 -91易搜 - 阅读是一种生活方式 ()》,后面发现网上还有一种更简单的一种方式。有点:代码少,简单缺点:边界不够圆滑(存在锯齿)正文具体效果如下(左侧是RoundImage...

陈独秀:人生的真义

人生在世,究竟为的甚么?究竟应该怎样?这两句话实在难得回答的很,我们若是不能回答这两句话,糊糊涂涂过了一生,岂不是太无意识吗?自古以来,说明这个道理的人也算不少,大概约有数种:第一是宗教家,像那佛教家说:世界本来是个幻象,人生本来无生;“真如”本性为“无明”所迷,才现出一切生灭幻象;一旦“无明”灭,...

JNI之函数的参数介绍

前言之前学过JNI的动态注册和静态注册,到目前为止,简单的可以依葫芦画瓢了,但对于细节却还有很多的不知道。因此后面慢慢记录一下。方便自己查阅和学习。正文如果不知道静态注册和动态注册的使用,请看《JNI静态注册》和《JNI动态注册》,这次只关注详细JNI中方法的前两个参数的解释。在之前JNI...

Socket的简单使用记录

前言Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,...

Android刷新媒体库的方法

前言记录一下Android中如何通知扫描文件,也就是把新创建的媒体文件添加到MediaProvider中。这里简单介绍一下个人常用的几种方式。正文方式一发送广播,Intent.ACTION_MEDIA_SCANNER_SCAN_FILE是Android定义的广播。private voi...

林清玄:把时间花在心灵上

朋友带我去看一位收藏家的收藏,据说他收藏的都是顶级的东西,随便拿一件来都是价逾千万。我们穿过一条条的巷子,来到一家不起眼的公寓前面,我心中正自纳闷,顶级的古董怎么会收藏在这种地方呢?收藏家来开门了,连续打开三扇不锈钢门,才走进屋内。室内的灯光非常幽暗,等了几秒钟,我才适应了室内的光线,这时,才赫...