关于Android中“PersistableBundle”bug

最近公司的项目是适配的平板,而且需要放在智能电视上作展示用。

直接说bug吧,项目在平板上、各种模拟器上都可以完美运行,但是今天安装到电视上就直接crash。(前天已经安装在电视上并完美运行,由于这两天没做版本控制,所以也没有回退的功能。)

纠结的是, 电视上运行,没办法连到adb(用的公司台式机),最后只好给程序加了一个输出崩溃报告到存储中,再用电视下载一个ES管理器查看log。

结果就是这个 <code>Didn't find class "android.os.PersistableBundle" </code>问题。

去搜索一下,解决很简单,原来是这里出了问题。

@Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        super.onSaveInstanceState(outState, outPersistentState);
        Log.i("MSL, MainActivity", "onSaveInstanceState: ");
    }

solve它很简单,把参数二去掉就行运行。(stackoverflow上很多解决的方法,比如,把targetVersion变低等。。。)

那么为什么会导致这样的情况呢?

还是看log中,下面几行,eventbus被揪出来了。

Eventbus3.0 FAQ中,貌似解释了这是怎么回事,eventbus在注册时,会去枚举类中的所有方法,而它发现了当前设备无法运行的一个方法,于是就会抛出异常。
log中报错在onCreate()中,EventBus注册这里。
再根据报错的title,去查看api,原来在google 的api 中PersistableBundle是21时加入的,我的电视版本是kitkat的,怪不得会崩溃。

但是,还有一点问题,同样是4.4的版本,我的小米平板运行良好,为什么电视上就crash呢,费解费解。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,313评论 25 709
  • 框架:提供一定能力的小段程序 http://www.cnblogs.com/jincheng-yangchaofa...
    姑娘请别为难小僧阅读 12,094评论 0 132
  • 一.榜单介绍 排行榜包括四大类: 单一框架:仅提供路由、网络层、UI层、通信层或其他单一功能的框架 混合开发框架:...
    伟子男阅读 10,620评论 0 161
  • 假如 test.py 文件需要调用 called.py 文件中的 fun(x)函数:有两种情况: 1、test.p...
    素娜93阅读 3,068评论 0 1
  • 总目标:高效开心愉快地工作 紧急重要的事情:自身产品分析、移动支付的需求讨论、4.0.8迭代同步 重要不紧急:20...
    yi生有你阅读 903评论 0 0