Android知识Android开发Android开发

关于Android中“PersistableBundle”bug

2017-08-18  本文已影响0人  Vonelone

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

直接说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呢,费解费解。。。

上一篇下一篇

猜你喜欢

热点阅读