美文网首页Android知识Android开发Android开发
关于Android中“PersistableBundle”bug

关于Android中“PersistableBundle”bug

作者: Vonelone | 来源:发表于2017-08-18 22:31 被阅读0次

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

    直接说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中“PersistableBundle”bug

        本文链接:https://www.haomeiwen.com/subject/fnkzrxtx.html