码迷,mamicode.com
首页 > 移动开发 > 详细

Android 5.0原生bug及修复方法

时间:2015-03-10 14:05:00      阅读:941      评论:0      收藏:0      [点我收藏+]

标签:

Android 5.0已经来了,这个版本改动非常大,也意味着会有更多的bug隐藏在其中,我会在这篇文章中一直更新自己遇到的原生bug及修复方法。

1、bug1

现象:5.0中ActivityManagerService.keyguardWaitingForActivityDrawn ()接口替换了4.4中ActivityManagerService.dismissKeyguardOnNextActivity()接口,但是带来了一个显示bug,现象是keyguard隐藏后activity窗口还没显示出来,先看到的是launcher界面,接着才会显示目标activity窗口。

原因分析:5.0上触发调用ActivityStackSupervisor.notifyActivityDrawnForKeyguard()时机提前导致。

解决方法:注释掉ActivityStack.completeResumeLocked()函数中对notifyActivityDrawnForKeyguard()函数的调用。

    private void completeResumeLocked(ActivityRecord next) {
        next.idle = false;
        next.results = null;
        next.newIntents = null;

        if (next.isHomeActivity() && next.isNotResolverActivity()) {
            ProcessRecord app = next.task.mActivities.get(0).app;
            if (app != null && app != mService.mHomeProcess) {
                mService.mHomeProcess = app;
            }
        }

        if (next.nowVisible) {
            // We won't get a call to reportActivityVisibleLocked() so dismiss lockscreen now.
            //mStackSupervisor.notifyActivityDrawnForKeyguard();      //注释掉
        }

2、bug2

现象:一个父窗口拥有两个子窗口,且子窗口的type类型一致,两个子窗口有前后添加顺序,当两个子窗口同时显示时然后按下home键进入后台,再从桌面启动这个应用,会发现两个子窗口相对上下位置发生对调。

原因分析:有两个原因,一是子窗口type类型不该一致,二是WindowManagerService针对两个子窗口type类型一致时逻辑不健全。

解决办法:



Android 5.0原生bug及修复方法

标签:

原文地址:http://blog.csdn.net/guoqifa29/article/details/44173351

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!