blcr加速android启动速度遇到的问题及解决方法

最近在移植blcr-0.8.2到android,按照网上的资料移植完后,系统可以正常启动运行,但是设置语言后重新启动,还是原来的语言,而persist.sys.language和persist.sys.country属性又是设置后的语言属性。通过查找源代码,发现android在启动虚拟机的时候会通过读取persist.sys.language和persist.sys.country属性来设置本地语言。由此可见导致上述情况的发生是因为没有正确加载persist.sys.language和persist.sys.country属性。经过分析也确实如此,原来在没有blcr的时候每次启动Zygote进程都会重新启动虚拟机,读取persist.sys.language和persist.sys.country属性,但是有了blcr后,启动Zygote进程会从上次的CheckPoint开妈运行,而Zygote进程的CheckPoint是在启动虚拟机之后,因此虚拟机也在CheckPoint之内,本地语言也是上次保存CheckPoint是的语言。要解决这一问题就是要在启动虚拟机之后重新读取persist.sys.language和persist.sys.country属性并设置本地语言,在此提供一种方法是在/frameworks/base/services/java/com/android/server/am/ActivityManagerService.java文件中添加如下代码(见红色部分):

         GL_ES_VERSION = SystemProperties.getInt("ro.opengles.version",
             ConfigurationInfo.GL_ES_VERSION_UNDEFINED);
 
           Locale.setDefault(new Locale(SystemProperties.get("persist.sys.language"),
                                 SystemProperties.get("persist.sys.country")));


         mConfiguration.makeDefault();
         mProcessStats.init();

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值