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

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

2017-12-05 14:46 781 查看
针对以上的异常问题:个人综合网上的解决方式,供大家参考:

我遇到的问题是在android4.4.2系统上,程序会carsh。4.4以上正常,考虑是系统兼容性问题,最后通过第4种方法解决,在出现问题的activity的onCreate方法中删除了PersistableBundle persistentState参数,问题解决。

首先我们要知道如何排查问题;定位问题存在的 类或者方法:例如点击单个按钮出现的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);

}

和如下方法的异同:多了这个参数PersistableBundle persistentState

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

}

@Override

protected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

}

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

就其原因暂时没有时间具体细看;但是本质上 上面的含有两个参数的方法其实走的 还是如下面的方法中的一个参数。所以 调整下 方法 即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐