【异常处理】java.lang.ClassNotFoundException: Didn't find class "android.os.PersistableBundle"

来源:互联网 发布:网络监察大队图片 编辑:程序博客网 时间:2024/06/03 20:55

java.lang.ClassNotFoundException: Didn’t find class “android.os.PersistableBundle”on path: DexPathList…xxx.apk


针对以上的异常问题:个人综合网上的解决方式,供大家参考:

首先我们要知道如何排查问题;定位问题存在的 类或者方法:例如点击单个按钮出现的crash的排查方式:

  • 注释法:注释掉 这个按钮实现的逻辑;如果还是存在crash;说明和这个按钮实现的逻辑么有关系;
  • 替代法:我们可以 对一个按钮的点击效果通过不同的方式实现;例如:通过onclick()类,或者直接OnClickListen…(){} :测试导入的包是否正确;
  • 查看xml:打开对应得xml文件,看看是否有自定义 view导致或者 某个属性写的有问题导致的crash.
    以上方式 应该能解决 简单的点击按钮出现的错误了;
  • 等 …
    个人认为:定位问题同样是很重要的,也是解决问题的前提,你觉得呢?

异常的排查解决方式:

1:Manifest文件中注册的Activity的名称/包名 有没有写错 有些时候可能只写一个类名,前面用点号代替,但是这个类不在默认的包内,所以报这个错,那么只要写上类的全名,即可。

2: 看看libs中的libs包是否 完全导入到项目中;可以比较build.gradle中的包是否导入完全。

3:有一点也很重要,在Java Build Path面板下的Order and Export中,一定要把你引入的jar文件,勾上,否则,跟没引用一样。

4: 不兼容问题:这个只是在手机系统4.4出现这个crash;其他手机系统运行正常的 ;
通过测试发现:如下方法:

 @Overridepublic void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {    super.onCreate(savedInstanceState, persistentState);}@Overridepublic void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {    super.onSaveInstanceState(outState, outPersistentState);}

和如下方法的异同:

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);}@Overrideprotected void onSaveInstanceState(Bundle outState) {    super.onSaveInstanceState(outState);}

注意:在写Activity的时候,如果使用了public 两个Bundle参数的方法,那么在4.4的机器上就会出现crash的情况!
就其原因暂时没有时间具体细看;但是本质上 上面的含有两个参数的方法其实走的 还是如下面的方法中的一个参数。所以 调整下 方法 即可。


个人出现的问题是通过方法4 解决的。 欢迎大家指正,共同进步!

0 0
原创粉丝点击