文章之前写过,重新整理一下。
为什么会有应用已停止运行?
运行时出现了未捕获的异常,导致程序无法正常运行。
如下面,主线程(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(); }
历史上的今天
暂无评论...
随机推荐
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...
林清玄:把时间花在心灵上
朋友带我去看一位收藏家的收藏,据说他收藏的都是顶级的东西,随便拿一件来都是价逾千万。我们穿过一条条的巷子,来到一家不起眼的公寓前面,我心中正自纳闷,顶级的古董怎么会收藏在这种地方呢?收藏家来开门了,连续打开三扇不锈钢门,才走进屋内。室内的灯光非常幽暗,等了几秒钟,我才适应了室内的光线,这时,才赫...