首页 > 其他 > 详细

Activity管理机制

时间:2014-09-17 16:54:02      阅读:426      评论:0      收藏:0      [点我收藏+]

文章仅记录自己的一点理解,供日后参考。

AMS管理四大组件外加进程管理,其中最庞大的算是Activity了吧。

1、AMS中对ActivityStack划分为两类,其中一类是FrontStack,另一类刚好相反。

    boolean isFrontStack(ActivityStack stack) {
        return !(stack.isHomeStack() ^ getFocusedStack().isHomeStack());
    }

    ActivityStack getFocusedStack() {
        if (mFocusedStack == null) {
            return mHomeStack;
        }
        switch (mStackState) {
            case STACK_STATE_HOME_IN_FRONT:
            case STACK_STATE_HOME_TO_FRONT:
                return mHomeStack;
            case STACK_STATE_HOME_IN_BACK:
            case STACK_STATE_HOME_TO_BACK:
            default:
                return mFocusedStack;
        }
    }

上面的代码可以得出以下结论:

A )、对于4.4目前只有两个ActivityStack的逻辑很清晰:HomeStack、AStack

a、如果getFocusedStack()==HomeStack,那么HomeStack就是FrontStack,另一个就是非FrontStack。

b、如果getFocusedStack()==    AStack,那么HomeStack就是非FrontStack,另一个就是FrontStack。 

B )、如果做成多窗口至少有三个ActivityStack:HomeStack、AStack、BStack

a、如果getFocusedStack()==HomeStack,那么HomeStack就是FrontStack,AStack、BStack就是非FrontStack。

b、如果getFocusedStack()==       AStack,那么HomeStack就是非FrontStack,AStack、BStack就是FrontStack。

c、如果getFocusedStack()==       BStack,那么HomeStack就是非FrontStack,AStack、BStack就是FrontStack。

按照现有的逻辑来说,HomeStack跟其他所有ActivityStack是完全相反的,其他所有ActivityStack要么都是FrontStack,要么都是非FrontStack。那它这个isFrontStack分类有啥用?出于什么目的而设计的?


Activity管理机制

原文:http://blog.csdn.net/guoqifa29/article/details/39341931

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!