想必现在有很多小伙伴对于ActivityGroup做了什么方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些关于ActivityGroup做了什么方面的知识分享给大家,希望大家会喜欢哦。
Activity和ActivityGroup的关系看起来很像View和ViewGroup,对比一下:ViewGroup继承了View并实现内部嵌入View。
不管是View还是ViewGroup,在调用者看来都是一样的,只需要给它发送相应事件,并将View的内容显示到屏幕上ActivityGroup也继承了Activity,只是内部的Activity系统不会存档,不会像task那样做栈式切换。
系统不知道这种Activity的存在,你也就没法给它发送intent先看看普通Activity的运作过程:这个有点复杂,先从启动app说起。
每个App有一个ActivityThread实例,启动都是从这里开始的。
Activity启动后会新建binder等待ActivityManagerService(AMS)发送建立Activity的命令。
执行监听的就是ApplicationThread类,而H是一个handler用于执行Activity的操作ApplicationThread接到新建Activity的命令时,就会调用H执行新建Activity的操作。
建立Activiyt的过程中,会建立一个PhoneWindow实例。
每个PhoneWindow中都含有DecorView(View子类),调用setContentView()时就是给它添加子View。
建立PhoneWindow的过程中,会得到WindowManager实例,其中有W用于监听WindowManagerService(WMS)发出的事件。
同时建立ViewRoot用于实现各种事件分发和刷新。
View中的invalidate()方法调用parent.invalidate()执行刷新,最后就传到ViewRoot上了这基本上就完成了一个正常健全的Activity的创建过程。
而Activity内嵌的SubActivity就少了很多吧有点偷懒的意思。
新建SubActivity时不需要向AMS中发送新建的请求,AMS也就不知道这些SubActivity的存在,所以WindowManagerService也不会向SubActivity发送各种事件。
所以说,SubActivity仅仅建立了一个不会起作用的窗口。
窗口中的DecorView也没有设置ViewParent,所以你才可以将DecorView拿出来再添加到别的ViewGroup中。
SubView的作用就相当于一个View,当然,它的各种事件虽然不会被AMS调用,但是会被ActivityGroup调用。
这样内嵌的Activity就变得看似和正常Activity一样了。
总结一下:它在内部新建了Activity,拿出Activity内部View,并放在自己的View中进行显示;同时会将接收的Activity事件分发给内部Activity。
后来的后来,Android又搞了个叫Fragment的东西来取代ActivityGroup的功能。
本文到此结束,希望对大家有所帮助。