一、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的方式携带进去。

相关文章:Android Fragment 使用技巧

四、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汇总的更多相关文章

  1. [Android] Android 常见第三方库汇总地址

    Android 常见第三方库汇总地址 https://github.com/wasabeef/awesome-android-libraries List of Android Libraries T ...

  2. Android常见Crash原因总结(二)

    Android平台程序崩溃大家都应该遇到过,force close和ANR应该是大家遇到较多的. 这里把Android平台程序崩溃的各种类型做一个简述和原因列举. 1.ANR(可见ANR): 发生场景 ...

  3. Android常见Crash类型分析(一)

    问题1.   java.lang.IllegalStateException: The specified child already has a parent. You must call remo ...

  4. Android Native/Tombstone Crash Log 详细分析(转)

    转自:http://weibo.com/p/230418702c2db50102vc2h Android 虽然已经有好几年了,但是NDK的开放速度却非常缓慢,所以目前网络上针对对Android Nat ...

  5. android 常见死机问题--log分析

    http://blog.csdn.net/fangchongbory/article/details/7645815         android 常见死机问题--log分析============ ...

  6. GitHub上史上最全的Android开源项目分类汇总 (转)

    GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...

  7. Android 常见工具类封装

    1,MD5工具类: public class MD5Util { public final static String MD5(String s) { char hexDigits[] = { '0' ...

  8. GitHub上史上最全的Android开源项目分类汇总

    今天在看博客的时候,无意中发现了 @Trinea 在GitHub上的一个项目 Android开源项目分类汇总 ,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有参考价值,包括很炫 ...

  9. Android 开源项目分类汇总(转)

    Android 开源项目分类汇总(转) ## 第一部分 个性化控件(View)主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Galler ...

随机推荐

  1. 【MySQL】MySQL中where条件的执行分析

    1.问题描述 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣.当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析.语法解析.权限检 ...

  2. Mini projects #8–RiceRocks

    课程全名:An Introduction to Interactive Programming in Python,来自 Rice University 授课教授:Joe Warren, Scott ...

  3. H3C IRF mad检测

    这里 irf 两个交换机 S4 S5 S4 S4的MEmber id 为1 IRF member 1 renumber 1 S4的 irf 优先为10 irf member priority 10 链 ...

  4. java解析json

    1:下载另外一个Java的小包就可以了: http://www.JSON.org/java/json_simple.zip 里面有源码和文档例题和编程的lib包:编程只需要json_simple.ja ...

  5. 表格里使用text-overflow后不能隐藏超出的文本的解决方法

          当把text-overflow设为ellipsis时文本溢出内容就能显示为省略标记,而设为clip时就能把文本溢出的部分裁切掉,不过在表格里面使用text-overflow后依旧不能隐藏超 ...

  6. TCP Fast Open

    We know that Web services use the TCP protocol at the transport layer. Standard TCP protocol to thre ...

  7. 高亮 TRichEdit 当前行

    var   gStart, gLength, gCol: Integer; procedure SetRichEdit(aRichEdit: TRichEdit); var   fRow, fCol: ...

  8. 初试TinyIoCContainer笔记

    第一次看到TinyIoCContainer是在用NancyFx的时候,在Bootstrapper那里看到了她的影子. 那些叫Tiny的东西都挺有意思,IoC容器是我第一次遇到,于是找了些文章看了看,自 ...

  9. MVC与DWZ整合中部分问题的解决

    1.错误提示距离太远 2.正确与错误时返回JSON(即:如何不出现打开新页显示JSON字串) 3.打开新页后“数据加载中,请稍候”关不掉 4.如何正常的分页,同时如果有查询结果时分页也要有效 5.关闭 ...

  10. Xamarin.Android之MvvmCross

    欢迎大家加入以下开源社区 Xamarin-Cn:https://github.com/Xamarin-Cn Mvvmcross-Cn:https://github.com/Mvvmcross-Cn  ...