Android 常见Crash Log汇总
一、BinderProxy@4479b390 is not valid; is your activity running?
原因分析:
因为使用了AsyncTask 异步线程在线程完成以后的onPostExecute方法里面操作UI。这个时候如果用户在onPostExecute调用之间跳转了页面,这时activity已经onDestory了,那么就会报出android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@4479b390 is not valid; is your activity running?
解决办法:
1. 在修改UI之前使用Activity的isFinishing判断一下Activity是否还存在.
2. 在修改UI的时候捕获一下异常.
二、java.lang.NoSuchMethodError: android.app.ANRAppManager.dumpMessageHistory
原因分析:
Android是开源的系统,厂商获拿到源码后可以自由地定制和改造,当然,修改的过程可能带来一些不稳定的问题,会导致同样的代码,在一些特定的机型出现适配的问题。这个问题就是出现的很普遍的一个崩溃,异常信息如下所示:
java.lang.NoSuchMethodError: android.app.ANRAppManager.dumpMessageHistory
android.app.ActivityThread$ApplicationThread.dumpMessageHistory(ActivityThread.java:1177)
android.app.ApplicationThreadNative.onTransact(ApplicationThreadNative.java:609)
android.os.Binder.execTransact(Binder.java:351)
dalvik.system.NativeStart.run(Native Method)
先按照上面提到的思路,通过Android源码来分析问题的根源,找到ActivityThread
类,仔细检查,看到这个类里面并没有dumpMessageHistory
这个方法,也没有ANRAppManager
类,很明显这不是Android原生系统的方法,是被修改过的。再检查下出现这个崩溃的机型特点,发现也不是集中在某些机型上出现,对于这个问题,找到了一台出现这个崩溃的机器并重现出来了,得到的崩溃堆栈信息跟上面完全一样。
解决办法:
属于系统级别的问题,目前没有解决方案.
三、android.app.Fragment$InstantiationException — make sure class name exists, is public, and has an empty constructor that is public
解决办法:
若Fragement定义有带参构造函数,则一定要定义public的默认的构造函数。即可解决此问题。如果硬要携带参数进去,可以通过Intent结合Bunble的方式携带进去。
四、The final local variable xxx cannot be assigned, since it is defined in an enclosing type
错误分析:
The final local variable xxx cannot be assigned, since it is defined in an enclosing type“,其中xxx是一个局部变量名。首先这是一个java编译时的错误,翻译成中文是:不可变的局部变量不能被赋值,因为它已经被定义在一个封闭类型中。
解决办法:
如果将此变量声明为一个全局的变量,然后针对此数据做好相关的数据的内容控制即可。
五、Activity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView that was originally added here
异常场景:
经常在应用中需要处理一些耗时的工作,诸如读取大文件、访问网络资源等。为了避免因程序假死而带来的糟糕用户体验,通常我们可以通过线程+Handler或者Android提供的AsyncTask来解决该问题,并一般以ProgressDialog等提示性控件来告知用户当前的程序进度。而标题中描述的异常则会常常出现在这样的场景中,并且往往掩盖了导致异常的真正的罪魁祸首。
问题原因:
从异常描述中,大致的意思是存在窗口句柄泄露,即未能及时销毁某个PhoneWindow。而这往往误导了我们,把过多的精力放在查找所谓的内存泄露上了。其实存在这么一种情况,即因我们在非主线程中的某些操作不当而产生了一个严重的异常,从而强制当前Activity被关闭。而在关闭的同时,却没能及时的调用dismiss来解除对ProgressDialog等的引用,从而系统抛出了标题中的错误,而掩盖了真正导致这个错误的异常信息。
解决方法:
重写Activity的onDestroy方法,在方法中调用dismiss来解除对ProgressDialog等的引用。
六、Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri
日志内容:
Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=21235, uid=10285 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
异常场景:
在Android 6.0及以上的手机版本,做一些读取文件的操作,如读取图片的时候,如果没有申请权限,则会导致此问题。
解决办法:
在Manifest里面声明权限,在需要的时候,动态请求权限。
七、UnsatisfiedLinkError: JNI_ERR returned from JNI_OnLoad in
异常场景:Jar包中的Java方法调用Native方法的时候,出现链接失败
解决方法:检查混淆的设置,一般是Java层面的代码被混淆了,此时需要保证此区域的代码不被混淆
八、Timer already cancelled.
异常场景:一般与两种情况。1. cancel之前已经手动调用了一次cancel操作。2.timer运行的任务出错,导致Timer自动取消执行。
解决方法:一般是第二种错误场景为大多数出现的情况。建议优化运行任务的代码,对潜在的问题做好处理机制。
Android 常见Crash Log汇总的更多相关文章
- [Android] Android 常见第三方库汇总地址
Android 常见第三方库汇总地址 https://github.com/wasabeef/awesome-android-libraries List of Android Libraries T ...
- Android常见Crash原因总结(二)
Android平台程序崩溃大家都应该遇到过,force close和ANR应该是大家遇到较多的. 这里把Android平台程序崩溃的各种类型做一个简述和原因列举. 1.ANR(可见ANR): 发生场景 ...
- Android常见Crash类型分析(一)
问题1. java.lang.IllegalStateException: The specified child already has a parent. You must call remo ...
- Android Native/Tombstone Crash Log 详细分析(转)
转自:http://weibo.com/p/230418702c2db50102vc2h Android 虽然已经有好几年了,但是NDK的开放速度却非常缓慢,所以目前网络上针对对Android Nat ...
- android 常见死机问题--log分析
http://blog.csdn.net/fangchongbory/article/details/7645815 android 常见死机问题--log分析============ ...
- GitHub上史上最全的Android开源项目分类汇总 (转)
GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...
- Android 常见工具类封装
1,MD5工具类: public class MD5Util { public final static String MD5(String s) { char hexDigits[] = { '0' ...
- GitHub上史上最全的Android开源项目分类汇总
今天在看博客的时候,无意中发现了 @Trinea 在GitHub上的一个项目 Android开源项目分类汇总 ,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有参考价值,包括很炫 ...
- Android 开源项目分类汇总(转)
Android 开源项目分类汇总(转) ## 第一部分 个性化控件(View)主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Galler ...
随机推荐
- 我与solr(三)--solr后台相关介绍
1.DashBoard: 介绍了当前solr的相关信息,运行时间,版本信息,java虚拟机的配置信息. 注意我们的solr与lucence的版本号是保持一致的,而不同的lucence版本也需要对应的j ...
- JAVA里的异常
一.概念和分类 JAVA程序设计语言中,异常对象都是Throwable类的一个实例.Throwable分为Error和Exception. 其中,Error类层次结构描述了JAVA运行时系统的内部错误 ...
- 微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
微信小程序上传图片的时候,如果是多图片上传,一般都是直接用一个循环进行wx.uploadFile 这个在电脑上面测试与苹果手机上面都不会有什么问题 但当用安卓测试的时候,你会发现小程序会提示一个the ...
- Java HashMap的死循环
在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造 成Race Condition,从而导致死循环.这个事情我4 ...
- Python成长笔记 - 基础篇 (七)python面向对象
三大特性: 1.封装:在类中对数据赋值.内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法 2.继承:一个类可以派生出子类,在父类中定义的属性.方法会自动被子类继承 ...
- Java程序性能优化技巧
Java程序性能优化技巧 多线程.集合.网络编程.内存优化.缓冲..spring.设计模式.软件工程.编程思想 1.生成对象时,合理分配空间和大小new ArrayList(100); 2.优化for ...
- PHP中实现MySQL嵌套事务的两种解决方案
PHP中实现MySQL嵌套事务的两种解决方案 一.问题起源 在MySQL的官方文档中有明确的说明不支持嵌套事务: Transactions cannot be nested. This is a co ...
- CSS导航的魔力——源自温谦老师《CSS彻底研究设计》
web标准出台以后,非常注重的一个标准就是希望内容与样式分离.希望HTML就干HTML该干的事.但是有的时候我们为了美观必须多多少少改动HTML 代码.下面介绍几个导航栏. ...
- velocity导出word报错解决
- CSS 禁止浏览器滚动条的方法(转)
1.完全隐藏 在<boby>里加入scroll="no",可隐藏滚动条: <boby scroll="no"> 这个我用的时候完全没效果 ...