文章之前写过,重新整理一下。
为什么会有应用已停止运行?
运行时出现了未捕获的异常,导致程序无法正常运行。
如下面,主线程(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 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年决定人的一生
大家千万不要错过这篇文章,毕业三年多了,能看到这篇文章也是一种幸运,真的受益匪浅,对我有很大启迪,这篇文章将会改变我的一生,真的太好了,希望与有缘人分享,也希望对有缘人有所帮助!看完之后有种“相见恨晚”的感觉,特别激动,希望大家好好的珍藏这篇文章,相信多年以后,再来看这篇文章,一定有不同的感...
梁文道:在铁路上开餐
在日本坐火车旅行,其中一个乐趣是可以吃到美味的铁路便当。别小看这些并非现做因而盛放在保温器皿里的食物,它们可都经过精心配制,虽经水汽持续蒸腾,但风味别具。而且每个地方都有自己的特色,例如“明石便当”,一个小陶瓮里装着炖煮得软熟耐嚼的章鱼饭,光是外形就已经可爱了。讲究点的,还可以在各个车站百货公司里搜...