您的位置:首页 > 移动开发 > Android开发

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

2017-02-20 23:58 555 查看
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;其他手机系统运行正常的 ;

通过测试发现:如下方法:

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


和如下方法的异同:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}


注意:在写Activity的时候,如果使用了public 两个Bundle参数的方法,那么在4.4的机器上就会出现crash的情况!

就其原因暂时没有时间具体细看;但是本质上 上面的含有两个参数的方法其实走的 还是如下面的方法中的一个参数。所以 调整下 方法 即可。

个人出现的问题是通过方法4 解决的。 欢迎大家指正,共同进步!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  异常处理
相关文章推荐